单个事件循环中的Python WSGI服务器+控制器

时间:2014-10-29 21:37:12

标签: python wsgi

我需要实现一个服务器,它在一个事件循环中运行并服务一个WSGI应用程序(特别是用werkzeug编写的Web服务),同时偶尔会调用一个特定的函数,它可以控制服务器(例如,它可以暂停或关闭它)。 (函数的主体并不重要,例如,它可能只是检查当前时间或另一个进程的状态。)

我可以想象在两个独立的进程中执行此操作并具有专用的Web服务接口。上面描述的解决方案在我看来似乎更好。

您对如何处理此任务有什么想法吗?

谢谢你, 的Jakub

1 个答案:

答案 0 :(得分: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()