gpt4 book ai didi

Python远程过程调用(没有远程部分)

转载 作者:太空狗 更新时间:2023-10-30 02:50:06 25 4
gpt4 key购买 nike

我有一个未以 root 用户身份运行的 Python 服务器,它面向我正在开发的应用程序。然而,有些应用程序功能需要访问 RAW 套接字,这意味着 root 权限。

显然我不想以 root 身份运行主服务器,因此我的解决方案是创建一个以 root 身份运行的守护进程或命令行脚本,以提供对所述功能的 protected 访问。

但是我想搁置标准输入/标准输出通信并使用 RPC 交互方式,例如 Pyro .但这会将 RPC 接口(interface)暴露给任何可以通过网络访问机器的人,而我知道调用 RPC 方法的进程将是同一台机器上的另一个进程。

是否没有一种进程间过程调用标准可以以类似(仅限本地机器)方式使用?我想象服务器在做这样的事情:

# Server not running as root
pythonically, returned, values = other_process_running_as_root.some_method()

并且以 root 身份运行的进程公开了一个方法:

# Daemon running as root
@expose_this_method
def some_method():
# Play with RAW sockets
return pythonically, returned, values

这有可能吗?

最佳答案

根据我的评论,我很想看看是否可行,所以我尝试将其组合在一起:https://github.com/takowl/ZeroRPC

请记住,这是在一个小时左右的时间内拼凑起来的,所以它几乎肯定不如任何严肃的解决方案(例如,服务器端的任何错误都会使它崩溃......)。但它按照你的建议工作:

服务器:

rpcserver = zerorpc.Server("ipc://myrpc.ipc")

@rpcserver.expose
def product(a, b):
return a * b

rpcserver.run()

客户:

rpcclient = zerorpc.Client("ipc://myrpc.ipc")

print(rpcclient.product(5, 7))
rpcclient._stopserver()

关于Python远程过程调用(没有远程部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4761617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com