当我用Python语言编写的Web应用程序,我总是把我的Web服务器在同一进程作为我的后台任务。我不知道您使用的是什么Web服务器,但我个人使用CherryPy。你的应用程序可以有一堆它的线程作为Web服务器,并且你喜欢的许多其他线程作为后台任务。这样你就不需要任何带有套接字,命名管道等的复杂IPC。相反,你只需访问共享的,全局的,同步的数据结构来传递信息,并且你的不同模块可以直接调用其他功能。
编辑:为了澄清,您可以使用threading module在不同的线程比你的其他拦截服务器上运行您的CherryPy服务器。例如:
def listener():
sock = get_socket_from_somewhere()
while True:
client, addr = sock.accept()
# send data back to client, etc
from threading import Thread
t1 = Thread(target=listener)
t1.setDaemon(True)
t1.start()
cherrypy.quickstart() # you'd need actual arguments here
这个例子显示了如何在一个线程阻塞服务器在同一进程作为Web服务器(在这种情况下CherryPy的,但它可以是任何东西)。
这还是很模糊的。提供人与“系统”之间以及组成这个“系统”的两个程序之间的实际交互是很好的。 – 2009-04-28 14:26:35