Python 中的客户端到服务器远程函数调用。如何实施?

问题描述 投票:0回答:4

我正在尝试设置一个简单的客户端到服务器接口,用于调用服务器上的函数/程序。 客户端将向服务器发送一个简单的命令来侦听此类命令。一旦服务器接收到来自客户端的命令,它将在服务器上执行以下功能或程序。我研究了一个简单的 TCP 服务器,它接收文本字符串并解析该字符串,然后执行函数或外部程序。 我也研究过使用通过扭曲服务器实现的 XML-RPC。

我要问的是哪种设置最简单,或者有其他方法可以轻松完成此任务吗?

谢谢。

python twisted xml-rpc
4个回答
0
投票

有一个很棒的 Twisted 教程,它可以很好地作为教学工具(并指导您手动编写基本的服务器/客户端服务)。尝试一下 http://twistedmatrix.com/documents/current/core/howto/tutorial/ 您可能想要做的是解析收到的信息并采取相应的行动。


0
投票

如果适用于您的情况,也许您可以使用功能齐全的系统来执行异步/远程作业,例如Celery


0
投票

有不止一种方法可以实现您的要求,但各有优缺点:

  • Python 低级套接字

使用标准Python套接字库和客户端服务器架构

  • 通过 Telnet/SSH 等协议连接到服务器,然后触发一些代码。

使用 Telnet/ssh 或 Subprocess 等 Python 库。

  • XML-RPC

按照此处所述发送 XMP RPC 请求 http://docs.python.org/2/library/xmlrpclib.html

在我看来,实现远程方法触发的最简单方法是通过Python子流程模块。我通常使用以下语法来达到一般目的。

import subprocess

ret = subprocess.call(["ssh", "user@host", "program"]);

# or, with stderr:
prog = subprocess.Popen(["ssh", "user@host", "program"], stderr=subprocess.PIPE)
errdata = prog.communicate()[1]

希望有帮助


0
投票

11 年后你不可能还在等待答案,但对于有同样问题的其他人......我建议在服务器上使用 Flask 来监听 HTTP 请求。 Flask 上手非常快。但是您需要编写一个辅助函数来将传入请求中的 json 数据转换为传递到服务器函数中的参数。

我实际上制作了一个完全符合您要求的软件包。它允许您从客户端调用服务器函数: https://github.com/mariusfacktor/forthright

查看自述文件中的示例,应该很容易理解。

© www.soinside.com 2019 - 2024. All rights reserved.