问题标签 [pyro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 添加两个以上远程对象时,Python Pyro4 名称服务器冻结
假设我想从不同的位置 ping 一些东西,所以我将 ping 命令行工具包装到 python 中并使用 pyro4 prc 库来调用它。
我有一个 python Pyro4 名称服务器
和简单的 ping 服务器:
只要我只有两个 pingserver 一切都好,但是在我添加第三个名称服务器后停止响应。当然,每个 pingserver 都有唯一的名称。
例如,我想检查服务器的可用性:
这适用于两个 pingserver,但三个它只是等待一些东西。此脚本的回溯以 ctrl+C 终止:
strace 显示以下内容:
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 fcntl(3, F_GETFL)
= 0x2 (标志 O_RDWR) fcntl(3, F_SETFL, O_RDWR) = 0 connect(3, {sa_family=AF_INET, sin_port=htons(9090), sin_addr= inet_addr("ipofnameserver")}, 16) = 0 setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0 recvfrom(3,
以下示例也无法正常工作,因为它无法将名称解析为 pyro_uri,因为它只是在等待上一个示例中的内容。这个例子的有趣之处在于它打印了 fls,其中包含所有远程 pingserver 的名称。然后添加第四个 pingserver 我什至无法打印已注册 pingserver 的名称。
我为此苦苦挣扎了两天,不知道我的代码有什么问题。
django - 处理对 Django Web 应用程序的计算密集型请求,可能使用预分叉 RPC 服务器
我正在运行一个基于 Django 的 web 服务,在 nginx 后面使用 Gunicorn 作为反向代理。
我的网络服务提供了一个 Django 视图,该视图使用 MATLAB 的外部实例执行计算。因为 MATLAB 启动本身需要几秒钟的时间,所以即使是只产生非常简单的 MATLAB 计算的请求也需要这么长的时间来回答。
此外,由于在我的代码中完成了 MATLAB 沙盒,因此对于 Web 服务器进程,同时运行一个 MATLAB 实例非常重要。(因此,目前我正在使用 Gunicorn 同步工作者模型,它实现了预分叉网络服务器,但不使用任何多线程。)
为了改善用户体验,我现在想通过保持一些(例如 3-5 个)“就绪”的 MATLAB 实例运行并在请求进入时使用它们来消除 MATLAB 启动的等待时间。在为请求提供服务后,MATLAB 进程将被终止并立即启动一个新的,为另一个请求做好准备。
我一直在评估两种方法来做到这一点:
继续使用 Gunicorn 同步工作器模型并为每个 Web 服务器进程保留一个 MATLAB 实例。
这个问题似乎是传入的请求没有以循环方式分发到网络服务器工作进程。因此,可能会发生所有计算密集型请求都命中同一进程而用户仍需等待的情况,因为该单个 MATLAB 实例无法按需要尽快重新启动。
将 MATLAB 计算外包给后端服务器,后端服务器执行实际工作并由网络服务器进程通过 RPC 进行查询。
在我的概念中,会有许多 RPC 服务器进程在运行,每个进程都托管一个正在运行的 MATLAB 进程。处理请求后,将重新启动 MATLAB 进程。因为 RPC 服务器进程是循环查询的,所以用户永远不必等待 MATLAB 启动(除非总体请求太多,但这是不可避免的)。
由于第一种方法描述的问题,我认为 RPC 服务器(方法 2)会更好地解决我的问题。
我已经看过一些 Python 的 RPC 解决方案(尤其是 Pyro 和 RPyC),但是我找不到为 RPC 服务器使用预分叉服务器模型的实现。请记住,由于沙箱,多线程是不可能的,如果服务器只在连接被接受后分叉,我仍然需要在这之后启动 MATLAB,这会阻碍整个想法。
有人知道我的问题的更好解决方案吗?还是 RPC 服务器实际上是最好的解决方案?但是然后我需要一个预分叉 RPC 服务器(= 分叉一些进程并让它们都在同一个套接字上的 accept() 上旋转)或至少一个可以轻松修改的 RPC 框架(猴子补丁?) -分叉。
提前致谢。
python - 使用 Pyro4 获取系统信息
我尝试在自动测试中使用 Pyro4,但现在我对 Pyro4 的某些功能感到困惑。是否存在通过 Pyro4 对象获取系统信息的方法。
在我的想法中,我暴露了一个可以获取系统信息的pyro对象,远程机器可以使用这个对象来显示系统信息。但是在我的代码中,远程机器总是显示服务器信息。我想我误解或误用了 Pyro4
抱歉这个愚蠢的问题,我是 Pyro4 的新手。以下是我的示例代码。服务器公开 pyro 对象
和使用 Pyro 对象的客户端
ps 我知道我可以在客户端获取操作系统信息,但我想使用 Pyro 对象来获取信息,而不是客户端自己执行此操作。
python - Pyro4 无法在计算机之间连接
我对 Python 和 Pyro4 比较陌生,并且正在尝试弄清楚如何使用它们。我的问题是,鉴于以下服务器和客户端代码,我的两台计算机似乎无法相互通信。它们都运行 Ubuntu 12.04,并且在同一个本地网络上,并且可以互相 ping(和 ssh)。服务器 IP 为 192.168.0.18,客户端为 192.168.0.22。
这是我玩过(服务器)的(非常基本的)服务器代码:
这将运行并输出以下内容:
在客户端:
过了一会儿,这又回来了:
我也尝试过设置 Pyro4.config.HOST = '192.168.0.18' 而不是设置守护进程,但没有运气。
任何想法为什么这不起作用,或者我做错了什么?
python - Pyro4 不允许两个以上的客户端访问一个 URI
我正在使用 pygame 在 Python 中创建一个基于回合的策略游戏。我发现编写套接字非常困难,所以我求助于 Pyro 来分享游戏板的状态。但是,Pyro 似乎一次无法支持超过 2 个连接。
我正在通过 localhost 在 localhost 上运行名称服务器
测试用例“服务器”:
和客户:
前两个客户端的输出:
并重复
第三个客户端的输出:
并挂起。
来自第四个、第五个(可能还有更多)客户端的输出:
在这个阶段,我给名称服务器一个 ^C,客户端 3、4、... 给出这个输出并崩溃:
与此同时,客户 1 和 2 保持忙碌。
但是,中断其中一个活动客户端将使其中一个挂起的客户端开始运行。
我已经尝试通过“export PYRO_SERVERTYPE = multiplex”来切换线程,但这并没有改变行为。最大连接数的设置似乎是 200。将其设置为 1000 也没有解决我的问题。
我读过 Pyro 缺乏可扩展性,但我肯定能够获得至少 10 个连接吗?
如何一次将两个以上的客户端连接到 Pyro4 对象?
wordpress - 增强同一域 iFrame 的 SEO 的最佳方法是什么?
我公司的网站通过 PyroCMS 安装运行,该安装非常昂贵,但完全无法维护。另外,它是建立在一个不使用标签的平台上的,所以我们博客的 SEO 很差。
我已经在 Wordpress 上构建了博客的副本,并将 iframe 将其放入博客页面上的 Pyro 安装中。它们都托管在同一台服务器上,并且 wordpress 安装在 Pyro 安装中。
我的问题是:为了使用 iFrame 增强 SEO,我需要做什么?有没有更好的方法来做到这一点,我没有想到?基本上,有一些很好的文章正在写,我希望这些主题的利基性能够提高页面排名。
想法?谢谢。
〜乔
python-3.x - Pyro4 将 python2 连接到 python3
我有以下设置:在 python2.7 下运行的 Pyro 名称服务器,在 python2.7 下运行的 Pyro 守护程序,以及(理想情况下)运行 python3.3 的 Pyro 客户端。
如果我使用在 python2.7 下运行的客户端连接到服务器,一切正常。当为客户端使用 python3.3 时,我可以很好地创建代理连接,但我得到:
尝试使用任何远程方法时。pyro 文档似乎暗示我应该能够将 python2.7 实例与 python3.3 互连,不是这样吗?
python 的 2.7 和 3.3 实例都使用 Pyro4 版本 4.16
编辑:这是一些对我不起作用的实际代码:
(用一个python2 ns 启动)
在 python2.7 virtualenv 中:
在 python3.3 virtualenv 中:
我得到了我上面提到的那个确切的例外。
mysql - 使用 sqlalchemy 和 pyro 进行会话管理
我实际上是在使用 SQLAlchemy 和 MySQL 和 Pyro 来制作服务器程序。许多客户端连接到此服务器以发出请求。这些程序仅提供来自数据库 MySQL 的信息,有时还会进行一些计算。
为每个客户端创建一个会话还是为每个客户端使用相同的会话更好?
python - celery vs pyro:Pyro 是 Celery 的替代品吗?
我正在尝试了解 Celery 并且想知道 Celery 和 Pyro 是否正在尝试实现相同的目标?
有人可以告诉我,Celery 可以做什么,而 Pyro 不能,反之亦然?
python - 如何将 Pyro 与 gevent 一起使用?
可以同时使用 Pyro 和 gevent 吗?我该怎么做呢?
Pyro 想要有自己的事件循环,它下面可能使用 epoll 等。我在协调两者时遇到了麻烦。
帮助将不胜感激。