Python WSGI服务器与控制器在单一事件循环中
我需要实现一个服务器,这个服务器在一个事件循环中,既能运行一个WSGI应用(特别是用werkzeug写的网络服务),又能不时地调用一个特定的函数来控制服务器(比如可以暂停服务器或者关闭它)。这个函数的具体内容不重要,它可能只是检查当前时间或者另一个进程的状态。
我可以想象把这个功能放在两个独立的进程中,并设置一个专门的网络服务接口。不过,我觉得上面描述的方案更好。
你们有什么想法可以帮助我完成这个任务吗?
谢谢,
Jakub
1 个回答
0
最后我终于搞明白怎么用Twisted来做到这一点了。大概是这样的:
from twisted.web import server, resource
from twisted.internet import reactor, endpoints
from twisted.internet.task import LoopingCall
from twisted.web.wsgi import WSGIResource
lc = LoopingCall(server_controller)
# run server_controller once a second
lc.start(1.0)
# serve a WSGI application
resource = WSGIResource(reactor, reactor.getThreadPool(), application)
site = server.Site(resource)
reactor.listenTCP(8080, site)
# enter into the even loop
reactor.run()