在Python中将简单的Web服务器集成到自定义主循环中?

Dav*_*Eyk 4 python loops

我在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)

Joh*_*ooy 7

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)