Ich habe eine Tornado-App entwickelt, aber wenn sich mehr als ein Benutzer anmeldet, scheint er den vorherigen Benutzer auszuloggen. Ich komme aus einem Apache-Hintergrund, also dachte ich, Tornado würde entweder einen Thread oder einen Fork spawnen, aber das scheint nicht so zu sein.kann nicht mehr als einen Tornado-Prozess ausführen
Um dies zu mindern, habe ich Nginx installiert und es als Reverse-Proxy konfiguriert, um eingehende Anfragen an einen verfügbaren Tornado-Prozess weiterzuleiten. Nginx scheint aber gut zu funktionieren, wenn ich versuche, mehr als einen Tornado-Prozess starten einen anderen Port verwende ich die folgende Fehlermeldung erhalten:
http_server.listen(options.port)
File "/usr/local/lib/python2.7/dist-packages/tornado/tcpserver.py", line 125, in listen
sockets = bind_sockets(port, address=address)
File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 145, in bind_sockets
sock.bind(sockaddr)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
ich das bekomme im Grunde für jeden Prozess, den ich versuche, auf einem anderen Port zu starten.
Ich habe gelesen, dass ich Supervisor verwenden sollte, um meine Tornado-Prozesse zu verwalten, aber ich denke, das ist eher eine Bequemlichkeit. Im Moment frage ich mich, ob das Problem mit meinem tatsächlichen Tornado-Code oder meinem Setup irgendwo zu tun hat? Mein Python-Code sieht wie folgt aus:
from tornado.options import define, options
define("port", default=8000, help="run on given port", type=int)
....
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
meine Handler alle arbeiten gut und ich kann auf die Website zugreifen, wenn ich auf localhost gehen: 8000 brauchen nur ein paar frische Augen bitte. ;)