2016-10-09 2 views
0

Ich habe eine Standard tornado Anwendung in python.Hinzufügen von Spielschleife zum Tornado-Server in Python

Ich werde einen Spieleserver mit Tornados websockets machen.

Das Problem ist, ich brauche eine Spielschleife auf dem Server laufen, um Dinge zu tun.

Ich könnte eine Web-Handler ‚/ start‘ erstellen und fügen Sie den folgenden Code ein:

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

Das fühlt sich sehr hackish, und es bedeutet, jedes Mal ich Server gestartet werden soll, muss ich gehen zu /startserver

Gibt es einen besseren Weg, dies zu tun? Gibt es irgendwo, wenn der Server startet, kann ich eine Schleife hinzufügen?

Antwort

1

Sie konntest es einfach im Hintergrund beginnen wie:

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

Ich sollte eigentlich erwähnt, dass 'gunicorn' die App läuft verwendet wird:' gunicorn -k Tornado Meinedat: app'. Ich habe keinen Zugang zu einer "Schleife" oder so. –

+0

Danke, ich habe es zur Arbeit gebracht! –

Verwandte Themen