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(順便說一句,標準化和以不同語言實現)。
添加回答
舉報