【发布时间】:2016-07-07 04:52:06
【问题描述】:
我开发了一个 tornado 应用程序,但是当多个用户登录时,它似乎会注销前一个用户。我来自 Apache 背景,所以我认为 tornado 会产生一个线程或分叉一个进程,但似乎并非如此。
为了缓解这种情况,我安装了 nginx 并将其配置为反向代理,以将传入请求转发到可用的龙卷风进程。 Nginx 似乎工作正常,但是当我尝试使用不同的端口启动多个龙卷风进程时,我收到以下错误:
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
基本上我会为我尝试在不同端口上启动的每个进程得到这个。
我读到我应该使用主管来管理我的龙卷风过程,但我认为这更方便。目前我想知道问题是否与我的实际龙卷风代码或我在某处的设置有关?我的 python 代码如下所示:
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()
我的处理程序一切正常,当我访问 localhost:8000 时我可以访问该站点,只需要一双新鲜的眼睛。 ;)
【问题讨论】: