flask使用flask-socketio 啟動服務(wù)方式

項目里用了 flask-manager
啟動使用manager.run()
現(xiàn)在引入了 socket-io 使用要求socketio.run(app)
這樣應(yīng)該怎么樣啟動呢?

1.在manager 的runserver 命令里使用 socket.run(app)

@manager.option('-c', '--config', dest='config', help='Configuration file name', default='config.py')
@manager.option('-H', '--host', dest='host', help='Host address', default='0.0.0.0')
@manager.option('-p', '--port', dest='port', help='Application port', default=63341,type=int)
def runserver(config, host, port):
    app = create_app(config)
    # app.run(host=host, port=port, threaded=True)
    socketio.run(app) #在這里用

2.從segmentfault 得到結(jié)果:

重載 manager 的 run 函數(shù)
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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 上回我們說到了一些小功能,這次再對flask應(yīng)用做一個補充,交代flask的上下文變量,身份認證等功能。 當(dāng)我們的...
    天涯待歸客閱讀 5,903評論 0 5
  • Flask-SocketIO 使 Flask 應(yīng)用程序能夠訪問客戶端和服務(wù)器之間的低延遲雙向通信??蛻舳藨?yīng)用程序可...
    yongxinz閱讀 4,948評論 0 1
  • HelloWord程序 創(chuàng)建Python項目 打開Pycharm,創(chuàng)建 pure Python類型的項目,創(chuàng)建項目...
    懵懂_傻孩紙閱讀 1,513評論 0 1
  • 這幾天想學(xué)新東西,就看了flask框架,本身對python不太了解,網(wǎng)上的很多教程看了,總是在某些地方卡住。翻到一...
    易木成華閱讀 2,401評論 0 11
  • 序言,為他人服務(wù)。 第一章,投資品種? 第二章,如何選擇? 第三章,如何籌資?
    010ed0d5a362閱讀 173評論 0 0

友情鏈接更多精彩內(nèi)容