0
私はfoobar
というモジュールを持っていて、それは遠隔から呼びたいたくさんの関数を含んでいます。Pyroを使ってたくさんの関数を公開する
私の現在の解決策は、クラス内のすべての関数を静的メソッドとしてラップして共有することです。
は、ここに私のコードです:
pyro_server.py:
import Pyro4
import foobar
import inspect
Pyro4.config.REQUIRE_EXPOSE = False
import my_custom_pyro_config as pyro_config
def module_to_class(module):
class Wrapper:
pass
for name, func in inspect.getmembers(module, inspect.isfunction):
setattr(Wrapper, name, staticmethod(func))
return Wrapper
def main():
name_server = Pyro4.locateNS(host=pyro_config.IP, port=pyro_config.NS_PORT)
daemon = Pyro4.Daemon(host=pyro_config.IP, port=pyro_config.PYRO_PORT)
foobar_uri = daemon.register(module_to_class(foobar))
name_server.register("foobar", foobar_uri)
print("Entering request loop")
daemon.requestLoop()
それは動作しますが、それは一種の危険な感じ...
がこれを行うには良い方法はありますか?別のRPCライブラリに切り替えることができます
ありがとうIrmen。私はそれがあまりにも強力な/安全でない/恐ろしいので炎を使用するとは思わなかったと思います。 – user357269
はい、それは明示的にあなたがクラスで公開したい、エクスポートするものを安全なルート –