flask-socketio web开发启动服务方式,,使用 flask-soc


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

你可以重载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 吧。

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

编橙之家文章,

评论关闭