问题标签 [rpyc]

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.

0 投票
1 回答
107 浏览

python - 是否在远程主机上进行 rpyc 缓存。如何清洁它?

我在 Linux 机器上使用 Python 3,在同一主机上使用经典 rpyc。在当前目录中拥有简单的 python 文件 tst.py,其中包含两行:

然后我运行以下命令:

一切都如预期的那样。如果我现在关闭连接:“conn.close()”,关闭 python 会话,从当前目录中删除“ pycache ”,编辑“tst.py”文件,只留下一行:

并在新会话中从头开始重复上述相同的命令:

.....(跳过)...

因此,令人惊讶的是,尽管 tst.py 文件更改并且本地 python 缓存已被删除,但结果仍然相同。有人可以向新手解释我做错了什么以及如何清理以前加载的代码。“rpyc”有自己的缓存吗?如果您更改此“tst.py”文件的名称并使用新名称再次重复相同的过程,那么结果将是正确的。同样,这指向缓存但不在当前目录中。

0 投票
0 回答
65 浏览

python-3.x - Python3:启动多进程时出现BrokenPipeError

我有一个在多进程中生成另一个函数的代码。有时 start 方法会引发 BrokenPipeError 异常。

我的代码:

追溯:

我在这里缺少什么吗?my_func 启动一个新的 RPyC 服务。

0 投票
1 回答
120 浏览

python - 通过 RPyC 将 *args 和 **kwargs 正确传递到底层模块的问题

背景

我正在尝试实现APScheduler github 存储库中提供的RPyC概念验证示例,以便使用 gunicorn 与多个工作人员一起部署我的应用程序( APScheduler 的常见问题解答部分中指出的问题)。此外,我正在尝试使用Flask-APScheduler这样做,以便能够轻松地从任务功能中工作。app_contexts

问题

在调用通过 RPyC 公开的调度程序服务时,我似乎无法正确提供参数。args更具体地说,在传递参数和kwargs(文字变量)以及存储在暴露的 RPyC 函数的*args和中的变量时,这似乎成为一个问题。**kwargs

基本上,我通常在直接调用时使用的参数scheduler.add_job()在通过 RPyC 路由时不起作用,而是在尝试将 RPyC 公开方法接收到的参数传递给底层调度程序实例时导致如下错误。我怎样才能解决这个问题?

最小的工作示例

python app.py在一个终端和python scheduler.py另一个终端中运行

追踪簿来自self._scheduler.add_job(job_id, func, *args, **kwargs)

0 投票
0 回答
69 浏览

python - 无法使用 ssl 连接到我的 rpyc 服务器

我正在尝试使用 ssl 进行连接,因为我不希望互联网上的每个人都能看到该连接 [将我最常使用的计算机连接到 vps 和我的其他本地计算机] 但是,我在获取 ssl 时遇到了很多困难在 rpyc 上工作。我花了几天时间这样做...

client.py 位于 ubuntu 机器上,而 server.py 在 Windows 10 机器上运行。

我可以使用 ssh 从 ubuntu 机器使用端口 22 连接到 Windows 机器。

我在 windows 机器上也有端口转发端口 1337

另外,我在windows防火墙上启用了1337端口

在 client.py 示例中,我没有提供密钥文件或证书文件,但这似乎没有什么区别,因为我还创建了一个使用证书和密钥文件的 client.py,但它仍然给了我同样的结果。

我也可以 tcptraceroute 10.0.0.144 到端口 1337 与预期的结果

客户端.py

服务器.py

客户回溯

0 投票
1 回答
112 浏览

python - 通过代理的 RPyC 连接

语境

我有一个私人服务器,可以通过使用公共服务器作为代理访问

我可以连接到私人服务器(正确设置了 ssh 密钥)

或者在一行中:

问题:

现在,我希望能够RPyC从远程机器直接向私有服务器发送请求。

作为我为什么需要它的洞察力:远程机器有一个摄像头,而私有服务器有 gpus(两者之间有很好的连接)

到目前为止我尝试过的

我设法像在RPyC SSH 连接中一样运行 SSL 连接

使用类似Create a self signed X509 certificate in Python获得的密钥和证书。

现在,如果客户端已从公共服务器启动,它就可以工作。我不知道如何从远程机器重定向 SSL 连接。

我尝试过的其他事情是声明一个铅锤 SshMachine 作为零部署教程指示(https://rpyc.readthedocs.io/en/latest/docs/zerodeploy.html

我可以使用它启动一个零部署服务器,但这并不令人满意,因为它使用了一个新的(临时)python 副本,并且我需要使用来自私有服务器的已安装库(例如 cuda 设置)。

当然,我不能将这两种方法结合起来,因为ssl_connect需要一个字符串作为主机名,并且如果给定 SshMachine 则会引发异常。

约束

我对私有服务器和公共服务器都没有 root 访问权限,但是任何可以使用 pip 安装的库都可以。我试过看看 paramiko,但我不知道从哪里开始......

更新

我找到了一个解决方案(见答案https://stackoverflow.com/a/68535406/6068769),但我还有几个问题,所以我还不接受它:

  • 我不得不从线程服务器中删除验证器参数。使用 ssh 连接管道添加一个语法(客户端+服务器)是什么?
  • 为了使解决方案正常工作,我需要在另一个终端 ( ssh -o ....) 中的远程服务器和私有服务器之间打开一个 ssh 连接。否则,SshMachine 拒绝连接并出现以下错误:

我可以忍受事先打开连接,但如果我不必这样做会更干净。

  • SSL协议是否有另一种解决方案?
0 投票
0 回答
40 浏览

python - 通过 UNIX Socker 连接连接到 Rpyc 服务器

我有一个 Rpyc 服务器,由于我运行它的环境的限制,我需要使用 UNIX 连接来连接它(根本没有网络,但是 UNIX 套接字仍然可以工作,因为它们被视为文件)。目前我可以让它与网络一起使用

和一个看起来像的客户

通读文档,我发现我想使用 rpyc.utils.classic.unix_connect 的经典包中的一个方法,这可能会有所帮助,以及 ThreadedServer 中的 socket_path= 参数(与端口互斥)。由于我不确定将什么用作实际路径,因此无法使它们正常工作。

0 投票
0 回答
14 浏览

python - [Python][RPYC] Win32PipeStream & ThreadedServer

我正在 Python 3.9 上测试RPYC

我想创建一个带有 Win32PipeStream 实例的多线程 RPYC 服务器(接受多个客户端。我不想使用套接字流,而是使用 Windows 管道。

我不知道如何直接使用库 RPYC 来执行此操作。有人有想法吗?

我想做与以下代码相同的事情,但使用 Win32PipeStream(客户端和服务器之间通过 4 个管道进行通信):

前面的代码允许多个客户端连接到 RPYC 服务器,但是当它是 Windows 主机时,它没有使用管道流的参数。

以下代码有效,但是当客户端停止连接时,RPYC 服务器立即停止,我需要再次重新启动 RPYC 服务器:

先感谢您,

0 投票
0 回答
19 浏览

python-3.6 - 无法通过在 python 中使用 rpyc 访问客户端功能

我已经使用 rypc.connect_by_service() 连接了 rpyc 客户端和服务器。但是当建立连接时,客户端成功连接到服务器但服务器连接到无效服务而不是客户端服务。我只能访问客户端的服务器功能,但无法访问服务器端的客户端功能。有人可以指导我如何解决这个问题吗?

0 投票
0 回答
20 浏览

python - 查询rpyc中的多个客户端连接

当 mulipe 客户端连接到 rpyc 中的线程服务器时,有什么方法可以识别哪个客户端断开连接。

0 投票
0 回答
12 浏览

python - RPYC 和套接字接收异步

我想通过 RPYC 远程打开一个监听套接字。当我socket.rcv()(远程)在 RPYC 服务器上执行操作时,RPYC 通信通道超时。我如何使用async_()https://rpyc.readthedocs.io/en/latest/docs/async.html)或其他东西远程接收数据而不阻塞 RPYC 通信?

先感谢您,