【问题标题】:How can I start multiple Tornado Server instances in multiple ports如何在多个端口中启动多个 Tornado 服务器实例
【发布时间】:2009-09-19 00:33:50
【问题描述】:

我需要在以下端口启动博客演示:

127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003

当我使用以下方式运行应用程序时:

./demos/blog/blog.py

它从以下定义的端口 8888 开始:

define("port", default=8888, help="在给定端口上运行", type=int)

如何在多个端口中运行多个实例?

【问题讨论】:

    标签: multiple-instances tornado


    【解决方案1】:

    我找到了我要找的东西:

    ./demos/blog/blog.py --port=8889
    

    【讨论】:

      【解决方案2】:

      请确保您知道,--port 选项会被 Tornado 框架的选项模块解析。

      如下所示的行:

      define("port", default=8888, help="Port to listen on", type=int)
      

      后来调用了自动解析命令行变量的选项模块。

      我只是给你这个,因为你可能想稍后在你的程序中指定不同的变量,这些变量是围绕你可能希望将实例更改为实例的框架设计的。

      【讨论】:

        【解决方案3】:

        您可以在创建处理程序时注册多个端口

        application = tornado.web.Application([
           (r".*", MainHandler),
        ], **app_settings)
        
        application.listen(8080)
        application.listen(8081)
        

        【讨论】:

        • 这应该是公认的答案,因为 Tornado 服务器的全部意义在于自封装。它应该能够监听多个端口并调度多个 web.Applications。
        【解决方案4】:

        使用 supervisord 启动多个实例。由于每个应用都采用 --port= 参数,因此您可以设置如下内容:

        这是我用于 Around The World 的设置

        [group:aroundtheworld]
        programs=aroundtheworld-10001,aroundtheworld-10002,aroundtheworld-10003
        
        [program:aroundtheworld-10001]
        command=/var/lib/tornado/aroundtheworld/app.py --port=10001
        directory=/var/lib/tornado/aroundtheworld/
        autorestart=true
        redirect_stderr=true
        stdout_logfile=/var/log/tornado/aroundtheworld-10001.log
        stdout_logfile_maxbytes=500MB
        stdout_logfile_backups=50
        stdout_capture_maxbytes=1MB
        stdout_events_enabled=false
        loglevel=warn
        
        [program:aroundtheworld-10002]
        command=/var/lib/tornado/aroundtheworld/app.py --port=10002
        directory=/var/lib/tornado/aroundtheworld/
        autorestart=true
        redirect_stderr=true
        stdout_logfile=/var/log/tornado/aroundtheworld-10002.log
        stdout_logfile_maxbytes=500MB
        stdout_logfile_backups=50
        stdout_capture_maxbytes=1MB
        stdout_events_enabled=false
        loglevel=warn
        
        [program:aroundtheworld-10003]
        command=/var/lib/tornado/aroundtheworld/app.py --port=10003
        directory=/var/lib/tornado/aroundtheworld/
        autorestart=true
        redirect_stderr=true
        stdout_logfile=/var/log/tornado/aroundtheworld-10003.log
        stdout_logfile_maxbytes=500MB
        stdout_logfile_backups=50
        stdout_capture_maxbytes=1MB
        stdout_events_enabled=false
        loglevel=warn
        

        如果您在如何设置 Nginx 或类似的负载平衡方面需要帮助,请提交一个新问题。

        【讨论】:

          【解决方案5】:
          copy /demos/blog/blog.py to blog_otherports.py
          

          更改blog_otherports.py中的帖子

          和蟒蛇blog_otherports.py

          你需要运行两个进程

          【讨论】:

          • 添加一个配置端口的运行时选项是所有必要的。现在在 github 上也有一个提交,它可以让 tornado 在你的机器上为每个核心分叉一个进程。
          • 没有。只需使用--port=<different port>
          猜你喜欢
          • 1970-01-01
          • 2013-01-26
          • 2018-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-26
          相关资源
          最近更新 更多