Использование приложения flash_wsgi, размещенного на хосте, для передачи в качестве внешнего процесса на сервер Flask-SocketIO, работающий на gunicorn с работником eventlet - PullRequest
0 голосов
/ 12 февраля 2019

У меня установлено приложение для колб на эластичном бобовом стебле.Это REST API, который в основном выполняет операции CRUD с базой данных и не требует больших вычислений.Предоставляется конфигурация по умолчанию Apache + mod_wsgi, которая не поддерживает Flask-SocketIO.Хотя мне удалось заменить его настройкой nginx + gunicorn + eventlet.Он работает хорошо, но иногда я сталкиваюсь с некоторыми проблемами развертывания.

Использование настройки mod_wsgi по умолчанию и использование ее для передачи данных, как упомянуто здесь https://flask -socketio.readthedocs.io / en / latest/ # emitting-from-an-external-process и при запуске сервера flask-socketio, использующего ту же очередь сообщений Redis, я смог отправить данные из экземпляра mod_wsgi, и, похоже, он работает хорошо.

Может кто-нибудь сказать мне, могут ли быть проблемы с Flask-SocketIO с такой конфигурацией, или способ gunicorn + nginx подходит лучше?Я бы перешел к нему, если у меня возникнут какие-либо проблемы с текущей конфигурацией.

1 Ответ

0 голосов
/ 12 февраля 2019

Нет проблем, но есть недостатки.

Внешние процессы не могут получать события и не могут получать обратные вызовы для событий, которые они излучают.Поэтому убедитесь, что это не будет ограничением в будущем.

Другой вариант, который у вас есть, - это подключить ваш сервер mod_wsgi к вашему серверу Flask-SocketIO в качестве клиента Socket.IO, а не в качестве внешнего.процесс.Если вы подключаетесь как клиент, вам не нужно использовать очередь Redis, соединение выполняется через длинный опрос и / или WebSocket.

...