我正在尝试设置一个简单的客户端到服务器接口,用于调用服务器上的函数/程序。 客户端将向服务器发送一个简单的命令来侦听此类命令。一旦服务器接收到来自客户端的命令,它将在服务器上执行以下功能或程序。我研究了一个简单的 TCP 服务器,它接收文本字符串并解析该字符串,然后执行函数或外部程序。 我也研究过使用通过扭曲服务器实现的 XML-RPC。
我要问的是哪种设置最简单,或者有其他方法可以轻松完成此任务吗?
谢谢。
有一个很棒的 Twisted 教程,它可以很好地作为教学工具(并指导您手动编写基本的服务器/客户端服务)。尝试一下 http://twistedmatrix.com/documents/current/core/howto/tutorial/ 您可能想要做的是解析收到的信息并采取相应的行动。
如果适用于您的情况,也许您可以使用功能齐全的系统来执行异步/远程作业,例如Celery?
有不止一种方法可以实现您的要求,但各有优缺点:
使用标准Python套接字库和客户端服务器架构
使用 Telnet/ssh 或 Subprocess 等 Python 库。
按照此处所述发送 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]
希望有帮助
11 年后你不可能还在等待答案,但对于有同样问题的其他人......我建议在服务器上使用 Flask 来监听 HTTP 请求。 Flask 上手非常快。但是您需要编写一个辅助函数来将传入请求中的 json 数据转换为传递到服务器函数中的参数。
我实际上制作了一个完全符合您要求的软件包。它允许您从客户端调用服务器函数: https://github.com/mariusfacktor/forthright
查看自述文件中的示例,应该很容易理解。