在 python 中将游戏循环添加到龙卷风服务器

Add game loop to tornado server in python

我在 python 中有一个标准的 tornado 应用程序。

我将使用 tornado 的 websockets 制作游戏服务器。

问题是,我需要在服务器上有一个游戏循环 运行 来做事。

我可以创建一个网络处理程序“/startserver”并添加以下代码:

@tornado.web.asynchronous
def get(self):
    if not serverAlreadyStarted:
        serverAlreadyStarted = True
        while True:
            (...)

这感觉很hacky,意思是每次我要启动服务器,我需要去/startserver

有更好的方法吗?服务器启动的时候有什么地方可以加循环吗?

您可以像这样在后台启动它:

@gen.coroutine
def game_loop():
    while True:
        # Whatever your game loop does.
        print("tick")
        yield gen.sleep(1)

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    loop = tornado.ioloop.IOLoop.current()
    loop.spawn_callback(game_loop)
    loop.start()