问题标签 [pyro4]

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 投票
0 回答
131 浏览

python - 创建对象的类实例

所以我试图使用类实例来创建一个可以作为远程对象访问的远程数据库。但我的问题很简单,即能够存储对象(具有多个属性)而不是字符串(我目前已经编码)。

所以我有一个自行车仓库,不同的员工可以访问它,以便取走或存放自行车。

这就是不同员工访问上述自行车仓库的方式

并且实际访问是通过不同脚本中的几行代码执行的。

  1. 我想要做的是而不是像bike1,bike2等单个字符串实例。我想要并且想要在一个对象中为每个实例输入几个属性,即:

    “自行车,型号,颜色,价格”

稍后这些将按价格范围或型号进行搜索。

  1. 然后我希望能够通过仅指定自行车名称来从仓库中删除自行车(及其所有属性)。

我已经尝试了几件事,但已经挣扎了好几天。

0 投票
1 回答
119 浏览

python-3.x - Python Pyro4 - 获取客户端 IP

我希望服务器以任何方式获取调用者的 IP。例如,客户端调用服务器上检查其 IP 的函数。

另外我想知道如何使用纯 Python 或内置函数获取我自己的外部 IP。

0 投票
1 回答
231 浏览

python - Log input and output on a testing framework that uses Python, Pyro and pytest

I think it’s best if I explain what I want to do, first: I am currently developing a testing framework using Python, pytest and Pyro4. It is indented to test software running on hardware prototypes. The developer/tester is executing the test script on his PC locally using pytest. In the test script, actions are executed using Pyro4 proxy objects which connect to a Pyro4 server (daemon) running on a Raspberry Pi. The implementation on the Raspberry Pi adapts various sensors and relays that are connected to the device under test, represented as objects, which are then passed to the Pyro4 daemon.

Here is a simplified example of how a test script could look like. What it does: Press button x and measure if LED y lights up.

Now, to my initial question: After each test run, i want to have a log file that shows the function calls, their input values and their return values. So it should look roughly like this:

I had two options in mind but was not able to archieve this:

Leveraging pytest

I was hoping to find some switch or plugin (for example pytest-logging) which would help me do this, but i simply could not find anything to archieve this.

Leveraging Pyro

This is where i got a bit farer. I was hoping to be able to subclass Pyro4 Proxy (the client) stuff to get this done. I subclassed Pyro4.Proxy and reimplemented the __getattr__ method, which is called to get the methods from the remote object at runtime. Using the name attribute, i can now at least detect when and which method is called, but i can still not get the return and input values.

To get the input and output values i would need to subclass and replace the _RemoteMethod class, which is returned by Pyro4.Proxy.__getattr__(self, name) but i couldn't even run the original code from Pyro4.Proxy.__getattr__(self, name) in my ImprovedProxy.__getattr__(self, name) without loads of errors, see for yourself:

The Traceback was:

Not sure why the name of my subclass is prepended here and after fiddling with the code for a while, i am not sure if this is the right way.

Is there a better way to solve this? As a last resort i could log actions on the server and send it to the client, but i would like to avoid this, one reason being that i have multiple of these test adapters running which would then require precise time syncronisation.

I hope i could explain this well enought. Looking forward to your replies.

0 投票
1 回答
396 浏览

python - 通过 Pyro 暴露一堆函数

我有一个名为的模块foobar,它包含一堆我想远程调用的函数。

我目前的解决方案是将所有这些函数作为静态方法包装在一个类中并共享。

这是我的代码:

pyro_server.py:

有效,但感觉有点狡猾...

有一个更好的方法吗?我愿意切换到另一个 RPC 库

0 投票
1 回答
607 浏览

python-2.7 - 运行 gensim 分布式 LSI 时,AttributeError 模块 'Pyro4' 没有属性 'expose'

所以我试图从 gensim 为分布式 LSI 运行演示(你可以在这里找到它)但是每当我运行代码时,我都会收到错误

AttributeError: module 'Pyro4' has no attribute 'expose'

我在 stackoverflow 上检查了类似的问题,通常它们是由于滥用库引起的。

但是我没有直接使用 Pyro4,我使用的是 gensim 引入的分布式 LSI。所以我这边没有犯错的余地(或者我相信)

我的代码非常简单,您可以在下面找到它

0 投票
2 回答
478 浏览

python - Pyro4 客户端意外断开时释放资源

我有一个 Pyro4 分布式系统,有多个客户端连接到单个服务器。这些客户端连接到一个远程对象,该对象可能会在系统中分配一些资源(在我的例子中是虚拟设备)。

一旦客户端断开连接(假设是因为崩溃),我需要释放这些资源。检测特定客户端已与特定对象断开连接的正确方法是什么?

我尝试了不同的东西:

  • 覆盖Daemon.clientDisconnected方法。我connection从这个方法中得到一个参数。但我无法将其与对象相关联,因为我无法访问该连接所指的远程对象。
  • 使用Pyro4.current_contextDaemon.clientDisconnected. 这不起作用,因为这是一个线程本地对象。这样,如果我连接的客户端多于池中的线程,我就会得到重复的上下文。
  • 在 Pyro4 项目可用的“usersession”示例中使用Proxy._pyroAnnotationsas 对我没有帮助,因为我再次从Pyro4.core.current_context.annotations属性中获取注释,它在Daemon.clientDisconnected调用时显示错误的注释(我想是由于线程相关问题)。
  • 在远程类中使用instance_mode="session"__del__方法(因为每个客户端都有一个单独的类实例,因此一旦客户端断开连接,该实例就应该被销毁)。但这依赖于__del__方法,正如一些 Python 程序员会指出的那样,该方法存在一些问题。

我添加了我当前的解决方案作为答案,但我真的很想知道 Pyro4 是否有更优雅的方法,因为这种情况是网络编程中的一种循环模式。

0 投票
2 回答
176 浏览

python - 作为 Pyro4 服务器运行时出现 Keras/TensorFlow 错误

我有一个使用 Pyro4 的客户端-服务器设计,其中客户端代码如下:

服务器端代码如下:

服务器启动后,客户端对 run_model() 方法的第一次调用正常运行。对于第二次和所有后续调用,将显示以下错误消息:

文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Pyro4/core.py”,第 187 行,调用
return self.__send(self.__name, args, kwargs)
_pyroInvoke raise data 中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Pyro4/core.py”,第 472 行,
如果您在回溯中看到这个,您应该可能还要检查远程回溯
ValueError: Fetch 参数不能被解释为张量。(操作名称:“lstm_1/init”
op:“NoOp”
输入:“^lstm_1/kernel/Assign”
输入:“^lstm_1/recurrent_kernel/Assign”
输入:“^lstm_1/bias/Assign”
不是这个的元素图形。)

任何人都可以为此提出一个可能的解决方案吗?

0 投票
1 回答
541 浏览

python - 如何在 Pyro v.4.63 中正确使用第三方库

我对使用远程第三方库有点困惑:

1)例如, 我有服务器代码:

CPU组件是这样的:

当我像这样在客户端中使用它时:

我收到一个错误:

如您所见,它无法反序列化。如果我更改返回:

return tuple(psutil.cpu_times()),然后它工作。

2)我认为下一个问题具有相同的性质: 除了组件之外,服务器代码几乎相同

如果我需要远程模块,但在本地没有,为什么我不能这样做:

注册器组件:

所以当我在客户端使用它时:

我收到一个错误:

请帮助我理解这个错误以及我在哪里遗漏了什么?与第三方远程合作时,处理此类事情的最佳方法是什么?提前致谢!

0 投票
1 回答
729 浏览

python - Pyro4 和普通的旧数据对象

我有一个用 Pyro4 公开的对象,它返回一个 POD 对象:

但是当我尝试像这样检索这个对象时:

我得到一个这样的例外:

有什么方法可以返回 POD 对象并使用它们的字段,还是我需要通过方法或属性公开这些字段?

0 投票
1 回答
114 浏览

python - 使用 Pyro 事件服务器(订阅)是否有任何替代方法 - 通过使用 Pyro4 或其他软件包?

我正在更新一个代码(最初用 python 2.7 编写)以与 python 2.7 和 python 3 兼容。代码使用的包 Pyro(3) 似乎与 python 3 不兼容,所以我试过了改为使用 Pyro4。虽然使用 Pyro4 帮助解决了我遇到的一些问题,但它似乎没有 Pyro 中的事件服务器(订阅)功能(除非我遗漏了一些明显的东西??)。

它在 Pyro4 中是否已重命名为其他名称,或者是否有其他方式可以在 Pyro4 中使用订阅者?如果没有,是否有其他任何人都可以推荐的可以替代使用的软件包?

谢谢你的帮助!!