3 回答
TA贡献1830条经验 获得超3个赞
该multiprocessing库提供了包装套接字的侦听器和客户端,允许您传递任意python对象。
您的服务器可以侦听接收python对象:
from multiprocessing.connection import Listener
address = ('localhost', 6000) # family is deduced to be 'AF_INET'
listener = Listener(address, authkey='secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
while True:
msg = conn.recv()
# do something with msg
if msg == 'close':
conn.close()
break
listener.close()
您的客户端可以发送命令作为对象:
from multiprocessing.connection import Client
address = ('localhost', 6000)
conn = Client(address, authkey='secret password')
conn.send('close')
# can also send arbitrary objects:
# conn.send(['a', 2.5, None, int, sum])
conn.close()
TA贡献1909条经验 获得超7个赞
我会用套接字; 本地通信得到了极大的优化,因此您不应该遇到性能问题,并且如果需要,您可以将应用程序分发到不同的物理节点。
关于“低级”方法,你是对的。但您可以根据需要始终使用更高级别的包装器。XMLRPC可能是一个很好的候选者,但对于你正在尝试执行的任务来说可能有些过分。
Twisted提供了一些很好的协议简单实现,例如LineReceiver(用于简单的基于行的消息)或更优雅的AMP(顺便说一句,标准化和以不同语言实现)。
添加回答
举报