【问题标题】:unable to run more than one tornado process无法运行多个龙卷风进程
【发布时间】: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 时我可以访问该站点,只需要一双新鲜的眼睛。 ;)

【问题讨论】:

    标签: python nginx tornado


    【解决方案1】:

    好吧,我解决了这个问题。我有 .sh 文件试图启动多个进程:

    python initpumpkin.py --port=8000&
    python initpumpkin.py --port=8001&
    python initpumpkin.py --port=8002&
    python initpumpkin.py --port=8003&
    

    不幸的是,我没有告诉 tornado 解析命令行选项,所以我总是会得到那个地址总是在使用中的错误,因为端口“8000”被定义为我的默认端口,所以它每次都会尝试在那个端口上监听.为了缓解这种情况,请确保在 main 之后声明 tornado.options.parse_command_line():

    if __name__ == "__main__":
        tornado.options.parse_command_line()
    

    然后使用任何参数从 CLI 运行。

    【讨论】:

      【解决方案2】:

      您是否尝试过以这种方式启动服务器:

      server = tornado.httpserver.HTTPServer(app)
      server.bind(port, "0.0.0.0")
      server.start(0)
      
      IOLoop.current().start()
      

      server.start 接受一个进程数参数,其中0 告诉Tornado 机器上每个 CPU 使用一个进程

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        相关资源
        最近更新 更多