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