python - flask-socketio 启动服务方式

 裴潇艳 发布于 2022-10-26 07:40

使用 flask-socketio 在网页中嵌入了一个聊天室,启动服务使用的是:
socketio.run(app)
但是之前在没有写这个聊天室的时候,使用了flask-manager,开启服务是:
manager.run() 可以方便调试,同步数据库。
但是现在使用了socketio 就只能用socketio.run(app)启动了吗?

2 个回答
  • 你可以重载manage.py 中的run()函数:

    class Server(_Server):
        help = description = 'Runs the Socket.IO web server'
    
        def get_options(self):
            options = (
                Option('-h', '--host',
                       dest='host',
                       default=self.host),
    
                Option('-p', '--port',
                       dest='port',
                       type=int,
                       default=self.port),
    
                Option('-d', '--debug',
                       action='store_true',
                       dest='use_debugger',
                       help=('enable the Werkzeug debugger (DO NOT use in '
                             'production code)'),
                       default=self.use_debugger),
                Option('-D', '--no-debug',
                       action='store_false',
                       dest='use_debugger',
                       help='disable the Werkzeug debugger',
                       default=self.use_debugger),
    
                Option('-r', '--reload',
                       action='store_true',
                       dest='use_reloader',
                       help=('monitor Python files for changes (not 100%% safe '
                             'for production use)'),
                       default=self.use_reloader),
                Option('-R', '--no-reload',
                       action='store_false',
                       dest='use_reloader',
                       help='do not monitor Python files for changes',
                       default=self.use_reloader),
            )
            return options
    
        def __call__(self, app, host, port, use_debugger, use_reloader):
            # override the default runserver command to start a Socket.IO server
            if use_debugger is None:
                use_debugger = app.debug
                if use_debugger is None:
                    use_debugger = True
            if use_reloader is None:
                use_reloader = app.debug
            socketio.run(app,
                         host=host,
                         port=port,
                         debug=use_debugger,
                         use_reloader=use_reloader,
                         **self.server_options)
    
    manager.add_command("runserver", Server())

    启动方式: python manage.py runserver --host 0.0.0.0 --port 8000 -d -r
    上述方式只在调试时使用,上线还是Gunicorn/uwsgi + nginx 吧。

    2022-10-27 00:16 回答
  • 不用只需要运行app.run()你可以直接使用manager.run()测试一下flask-socketio大概可以使用。但是我一直都没有找到flask-socketio如何整合到nginx。。

    2022-10-27 00:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有