我在tornado
中有一个标准的python
申请。
我将使用龙卷风的websockets
制作游戏服务器。
问题是,我需要在服务器上运行一个游戏循环来做事。
我可以创建一个Web处理程序'/ startserver'并添加以下代码:
@tornado.web.asynchronous
def get(self):
if not serverAlreadyStarted:
serverAlreadyStarted = True
while True:
(...)
这感觉非常hackish,这意味着每次我想要开始服务器,我需要去 /startserver
有更好的方法吗?在服务器启动的某个地方,我可以添加循环吗?
答案 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()