Я хочу добавить многопроцессорность к своему Flask -SocketIO серверу, поэтому я пытаюсь добавить очередь сообщений Redis согласно Flask -SocketIO docs . Даже без добавления многопроцессорной обработки клиент не получает никаких событий. Все остальное работает нормально (например, веб-страница обслуживается, выполняются HTTP-запросы, выполняются вызовы базы данных). На передней или задней части нет сообщений об ошибках. До того как я добавил очередь Redis, она работала. Я проверил, что используется маршрут SocketIO 'addname' и что request.sid выглядит правильно. Что я делаю не так?
Очень упрощенный код сервера:
external_sio = SocketIO(message_queue='redis://')
def requester(user, sid):
global external_sio
external_sio.emit('addname', {'data': 'hello'}, room=sid)
# do some stuff with requests and databases
external_sio.emit('addname', {'data': 'goodbye'}, room=sid)
def main():
app = Flask(__name__,
static_url_path='',
static_folder='dist',
template_folder='dist')
socketio = SocketIO(app)
@socketio.on('addname')
def add_name(user):
global external_sio
external_sio.emit('addname', {'data': 'test'}, room=request.sid)
requester(user.data, request.sid)
socketio.run(app, host='0.0.0.0', port=8000)
if __name__ == '__main__':
main()
Упрощенный код клиента (React Javascript):
const socket = SocketIOClient('ipaddress:8000')
socket.emit('addname', {data: 'somename'})
socket.on('addname', ({data}) => console.log(data))