【问题标题】:How to run flask socket.io on localhost (xampp)如何在 localhost (xampp) 上运行烧瓶 socket.io
【发布时间】:2015-08-29 19:15:38
【问题描述】:

我看过的教程使用以下代码来运行服务器:

if __name__ == '__main__':
    socketio.run(app)

我的__init__.py 文件是:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.orm import sessionmaker
from sqlalchemy import *
from flask.ext.socketio import SocketIO, emit                                                                                       


app = Flask(__name__)
socketio = SocketIO(app)
app.debug = True
engine = create_engine('mysql://root:my_pw@localhost/db_name') 
DBSession = sessionmaker(bind=engine)
import couponmonk.views

我的views.py 文件包含所有@app.route@socketio 装饰器。

我的问题是,我应该把代码放在哪里:

socketio.run(app)

当我将它放入 __init__.py_ 文件时,我收到错误消息:

File "/opt/lampp/htdocs/flaskapp/flask.wsgi", line 7, in <module>
from couponmonk import app as application
File "/home/giri/Desktop/couponmonk/venv/couponmonk/__init__.py", line 14, in <module>
socketio.run(app)
File "/home/giri/Desktop/couponmonk/venv/lib/python2.7/site-packages/flask_socketio/__init__.py", line 411, in run
run_with_reloader(run_server)
File "/home/giri/Desktop/couponmonk/venv/lib/python2.7/site-packages/werkzeug/serving.py", line 632, in run_with_reloader
return run_with_reloader(*args, **kwargs)
File "/home/giri/Desktop/couponmonk/venv/lib/python2.7/site-packages/werkzeug/_reloader.py", line 231, in run_with_reloader
sys.exit(reloader.restart_with_reloader())
SystemExit: 2

【问题讨论】:

    标签: python flask xampp flask-socketio


    【解决方案1】:

    您似乎在尝试使用 Miguel 的 Flask-socketIO 扩展,对吧?它只支持将 Guinicorn 作为 WSGI 服务器,并建议您使用 NGINX 作为代理通行证。我对xampp一无所知,但据我所知;从 Apache 的最新版本之一开始,可以进行代理传递。不过没试过。

    【讨论】:

      【解决方案2】:

      这里是 Flask-SocketIO 的作者。

      很遗憾,此扩展程序无法与标准 Web 服务器一起使用,您将无法托管通过 apache/mod_wsgi 使用它的应用程序。您需要使用 gevent 服务器,而不是通用的,而是为 Socket.IO 定制的。

      这意味着 Apache 退出了(它甚至不支持 WebSocket 流量)。 uWSGI 也已退出(支持 gevent,但无法使用自定义 gevent 服务器)。附带说明一下,Python 3 目前也已发布,因为 gevent 仅在 Python 2 上运行(尽管我认为很快会有好消息,但我正在研究一些想法让 socketio 现在在 Python 3 上运行) .

      documentation 中给出了您的选择。总结:

      • socketio.run(app),直接运行自定义的socketio gevent server。
      • 具有自定义 socketio 工作程序的 Gunicorn(文档中显示的命令行)

      如果你愿意,你可以把 nginx 作为反向代理放在你的服务器前面。配置也显示在文档中。

      祝你好运!

      【讨论】:

      • 注意:从 1.0 版本开始支持eventlet(除了geventis available
      猜你喜欢
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2018-04-11
      • 2021-12-20
      • 2016-02-07
      相关资源
      最近更新 更多