Я пытаюсь заставить eventlet
работать с flask-socketio
в Python 2.7.Вот код «голых костей», который я использую:
import eventlet
from flask import Flask
from flask_socketio import SocketIO
import threading
import time
def server():
app = Flask(__name__)
app.config['SECRET_KEY'] = 'asdf'
socketio = SocketIO(app, host = '0.0.0.0')
socketio.run(app)
server_thread = threading.Thread(target = server)
server_thread.start()
while True:
time.sleep(1)
Когда я запускаю это на своем ноутбуке, кажется, это работает (flask-socketio
использует eventlet
).Но когда я запускаю это на встроенном устройстве, на котором оно предназначено, я получаю следующее сообщение:
Транспорт WebSocket недоступен.Установите eventlet или gevent и gevent-websocket для повышения производительности.
Существуют разные версии пакетов между двумя системами, и я подозреваю, что это является причиной сбоя.Вот пакеты во встроенной системе:
click==6.7
eventlet==0.18.4
Flask==0.12.2
Flask-SocketIO==3.3.2
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
pyserial==3.4
python-engineio==3.5.2
python-socketio==4.0.2
six==1.11.0
smbus==1.1
Werkzeug==0.12.2
Кто-нибудь знает, почему flask-socketio
не сможет использовать eventlet
с этими версиями?
Кроме того, я не знаю, еслиэто связано, но host = '0.0.0.0'
также игнорируется (как на моем компьютере разработчика, так и на встроенном компьютере).Он работает на 127.0.0.1 всегда.
Есть идеи?