如何在主管的监督下部署龙卷风websocket多进程应用程序?

弗拉基米尔·切尔涅佐夫(Vladimir Chernetsov)

我有一个应用程序(一小部分,不必要的部分被跳过):

# -*- coding: utf-8 -*-
import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.websocket
import db_util # pg utility import

class SampleWebSocket(tornado.websocket.WebSocketHandler):

    def open(self, *args, **kwargs):
        print u"open Websocket"
        do_init_stuff()

    def on_message(self, data):
        print u"%s BASE DATA RECIEVED:"
        print data
        do_on_message_stuff()

    def on_close(self):
        print u"WebSocket closed"
        do_on_close_stuff()

    def check_origin(self, origin):
        # Allow connect from all domains
        return True

def make_app(_settings):
    routes = [
        (r"/chat/sample/", handlers.SampleWebSocket),
    ]
    app = tornado.web.Application(routes)
    app.db = db_util.ConnectionRegistry()
    return app


if __name__ == "__main__":
    app = make_app()
    port = 5001
    app.db = db_util.ConnectionRegistry()
    print " *** DEBUG:False, Starting Chat at port: %s" % port
    server = tornado.httpserver.HTTPServer(app)
    server.bind(port)
    server.start(0) # actual number of cores == 2, so 2 subprocesses will be born
    tornado.ioloop.IOLoop.instance().start()

我正在尝试与主管一起部署它。这是监督配置的一部分:

[program:chat]
directory=/home/me/chat
command=/home/me/venv/bin/python2.6 /home/me/chat/main.py
process_name=%(program_name)s_%(process_num)01d
redirect_stderr=true
stdout_logfile=/tmp/chat.out.log
numprocs=1
numprocs_start=5001

当我第一次使用$ supervisor -csupervisord.conf启动它时,它会启动并响应,但似乎supervisored无法控制龙卷风子进程,因此,如果我使用$ supervisorctl restart重新启动服务,则我仍然有龙卷风子进程存在,并绑定到5001端口。并且服务无法正确重新启动。

因此,是否存在某种方法可以通过多处理为龙卷风配置主管人员?

本·达内尔

通常,如果您使用主管,则应使用主管的进程组,而不是龙卷风的多进程模式。增加numprocs超级用户配置,并通过传递--port=%(process_num)s命令行(在应用程序本身中定义了合适的选项),为每个进程提供不同的端口您将需要像nginx或haproxy这样的代理来平衡各个进程(或者您可以使用文件描述符传递来共享一个端口,如https://gist.github.com/bdarnell/1073945所示,但这是高级的用法,我建议您使用代理代替)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在主管的监督下部署龙卷风websocket多进程应用程序?

来自分类Dev

如何在龙卷风应用程序中检测长时阻塞功能

来自分类Dev

如何在龙卷风应用程序中接收多个请求

来自分类Dev

Dokku +龙卷风应用程序= 502 Bad Gateway

来自分类Dev

在多个Nginx位置的龙卷风应用程序

来自分类Dev

带有多进程的Python龙卷风

来自分类Dev

带有多进程的Python龙卷风

来自分类Dev

龙卷风-应用程序和请求日志记录如何工作?

来自分类Dev

如何编写Python龙卷风应用程序的单元测试?

来自分类Dev

龙卷风-应用程序和请求日志记录如何工作?

来自分类Dev

龙卷风和线程安全的websocket处理程序

来自分类Dev

运行应用程序时龙卷风向我显示错误500

来自分类Dev

使正则表达式捕获组在龙卷风应用程序的URL中是可选的

来自分类Dev

启动龙卷风应用程序时出现pycket错误-语法

来自分类Dev

如何从WebSocket处理程序获取龙卷风请求的客户端IP?

来自分类Dev

停止龙卷风应用

来自分类Dev

龙卷风应用设计

来自分类Dev

如何在龙卷风请求中执行龙卷风请求

来自分类Dev

如何在龙卷风和uwsgi之间集成一个websocket?

来自分类Dev

如何在龙卷风中使用安全的websocket(wss)

来自分类Dev

如何在处理程序中对龙卷风处理程序进行基准测试?

来自分类Dev

如何在处理程序中对龙卷风处理程序进行基准测试?

来自分类Dev

如何使用龙卷风运行Flask应用

来自分类Dev

运行多个龙卷风进程

来自分类Dev

如何在龙卷风中设置静态路径?

来自分类Dev

如何在龙卷风中刷新客户端?

来自分类Dev

将龙卷风与Pusher一起用于Django应用程序有哪些优势(或需求)?

来自分类Dev

在我自己的计算机中将龙卷风Web应用程序作为服务器运行

来自分类Dev

如何保护龙卷风python文件?

Related 相关文章

  1. 1

    如何在主管的监督下部署龙卷风websocket多进程应用程序?

  2. 2

    如何在龙卷风应用程序中检测长时阻塞功能

  3. 3

    如何在龙卷风应用程序中接收多个请求

  4. 4

    Dokku +龙卷风应用程序= 502 Bad Gateway

  5. 5

    在多个Nginx位置的龙卷风应用程序

  6. 6

    带有多进程的Python龙卷风

  7. 7

    带有多进程的Python龙卷风

  8. 8

    龙卷风-应用程序和请求日志记录如何工作?

  9. 9

    如何编写Python龙卷风应用程序的单元测试?

  10. 10

    龙卷风-应用程序和请求日志记录如何工作?

  11. 11

    龙卷风和线程安全的websocket处理程序

  12. 12

    运行应用程序时龙卷风向我显示错误500

  13. 13

    使正则表达式捕获组在龙卷风应用程序的URL中是可选的

  14. 14

    启动龙卷风应用程序时出现pycket错误-语法

  15. 15

    如何从WebSocket处理程序获取龙卷风请求的客户端IP?

  16. 16

    停止龙卷风应用

  17. 17

    龙卷风应用设计

  18. 18

    如何在龙卷风请求中执行龙卷风请求

  19. 19

    如何在龙卷风和uwsgi之间集成一个websocket?

  20. 20

    如何在龙卷风中使用安全的websocket(wss)

  21. 21

    如何在处理程序中对龙卷风处理程序进行基准测试?

  22. 22

    如何在处理程序中对龙卷风处理程序进行基准测试?

  23. 23

    如何使用龙卷风运行Flask应用

  24. 24

    运行多个龙卷风进程

  25. 25

    如何在龙卷风中设置静态路径?

  26. 26

    如何在龙卷风中刷新客户端?

  27. 27

    将龙卷风与Pusher一起用于Django应用程序有哪些优势(或需求)?

  28. 28

    在我自己的计算机中将龙卷风Web应用程序作为服务器运行

  29. 29

    如何保护龙卷风python文件?

热门标签

归档