Учитывая следующий пример, это довольно простой пример согласно документации. У меня ошибка при использовании redis или любого другого провайдера в качестве message_queue. Браузер просто зависает, хотя, если я просто установлю message_queue на None (раскомментируйте строку). Все работает как положено. Кроме того, у меня есть пакет пакетов kombu, redis и eventlet, установленный в среде. Используя flask -socketio == 4.2.1
from flask import Flask, jsonify
from flask_socketio import SocketIO, emit
message_queue = "redis://127.0.0.1:6379"
# message_queue = None
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app,
async_mode='eventlet',
message_queue=message_queue,
manage_session=False,
logger=True,
engineio_logger=True)
@app.route('/')
def home():
return """
<html>
<body>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.on('connect', function() {
socket.emit('my event', {data: 'Im connected!'});
});
socket.on('my response', function(data) {
console.log(data);
});
</script>
ok
</body>
</html>
"""
@socketio.on('my event')
def test_message(message):
emit('my response', {'data': 'got it!'})
Вот что записывается:
Server initialized for eventlet.
* Restarting with fsevents reloader
Server initialized for eventlet.
* Debugger is active!
* Debugger PIN: 609-071-851
(70237) wsgi starting up on http://127.0.0.1:5000
(70237) accepted ('127.0.0.1', 53303)
39982ab1b7f84dee8e8d34dee1141cec: Sending packet OPEN data {'sid': '39982ab1b7f84dee8e8d34dee1141cec', 'upgrades': ['websocket'], 'pingTimeout': 60000, 'pingInterval': 25000}
используя rabbit-mq я получил от журнала кролика вот такие логи:
rabbit_1 | 2020-02-18 20:47:16.535 [info] <0.18859.0> accepting AMQP connection <0.18859.0> (172.31.0.1:46412 -> 172.31.0.6:5672)
rabbit_1 | 2020-02-18 20:47:16.581 [info] <0.18859.0> connection <0.18859.0> (172.31.0.1:46412 -> 172.31.0.6:5672): user 'rabbitmq' authenticated and granted access to vhost '/'
=== обновлено
Исправление событий в начале файла не изменило поведение.
import eventlet
eventlet.monkey_patch()
Указан весь пример сценария. Если вам удастся заставить его работать должным образом, пожалуйста, оставьте комментарий. Спасибо.