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

时间:2016-10-09 15:27:09

标签: python loops tornado

我在tornado中有一个标准的python申请。

我将使用龙卷风的websockets制作游戏服务器。

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

我可以创建一个Web处理程序'/ startserver'并添加以下代码:

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

这感觉非常hackish,这意味着每次我想要开始服务器,我需要去 /startserver

有更好的方法吗?在服务器启动的某个地方,我可以添加循环吗?

1 个答案:

答案 0 :(得分:1)

你可以在后台启动它,如:

@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()