我在python中有一个带有自定义主循环的应用程序(我不相信细节很重要).我想将一个简单的非阻塞Web服务器集成到应用程序中,该应用程序可以内省应用程序对象,并可能提供一个操作它们的接口.最好的方法是什么?
我想避免任何使用线程的东西.理想的解决方案是具有"步进"功能的服务器,可以从我的主循环调用,执行它的操作,然后返回程序控制直到下一个循环.
解决方案越高级越好(尽管像Django一样整体可能有点矫枉过正).
理想情况下,解决方案将如下所示:
def main():
"""My main loop."""
http_server = SomeCoolHttpServer(port=8888)
while True:
# Do my stuff here...
# ...
http_server.next() # Server gets it's turn.
# Do more of my stuff here...
# ...
Run Code Online (Sandbox Code Playgroud)
Twisted旨在使这样的东西相当简单
import time
from twisted.web import server, resource
from twisted.internet import reactor
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
return "<html>%s Iterations!</html>"%n
def main():
global n
site = server.Site(Simple())
reactor.listenTCP(8080, site)
reactor.startRunning(False)
n=0
while True:
n+=1
if n%1000==0:
print n
time.sleep(0.001)
reactor.iterate()
if __name__=="__main__":
main()
Run Code Online (Sandbox Code Playgroud)