#python #webserver #fastapi #server-sent-events
Вопрос:
Я хотел бы использовать модуль sseclient python для прослушивания потоков SSE, но я хочу использовать его внутри веб-сервера python, построенного с помощью FastAPI.
Проблема здесь в том, что sseclient блокирует поток событий SSE, поэтому мой сервер python станет недоступным.
Интересно, какова наилучшая практика для достижения чего-то подобного.
Должен ли я использовать отдельный поток?
Может ли здесь помочь использование async / await?
Может ли использование серверных работников оказать какую-либо помощь в решении этой проблемы?
Должен ли я использовать совершенно другую службу для клиента sse вне моего веб-сервера python?
Любая помощь будет оценена.
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
2. Что вы хотите делать с событиями, полученными от sseclient во время его выполнения? Можно либо запустить его из процесса и интегрировать через API с чем-то вроде Redis, запустить его в отдельном потоке (.. но где хранить события), либо найти другую дополнительную библиотеку для использования, которая вместо этого поддерживает async / await.
3. @MatsLindh спасибо за ответ. С помощью полученных событий sse я хочу обновить базу данных, которая связана с моим веб-сервером. Как вы сказали, я предполагаю, что я бы использовал реализацию async / await. Но что, если я хочу прослушать много потоков? Предпочтительно ли, чтобы вся эта функциональность была вне процесса сервера?
4. Это действительно звучит как нечто, что должно существовать вне процесса сервера API, да; если у вас нет библиотеки, которая позволяет вам отслеживать множество потоков в одном и том же процессе, вам придется создавать отдельный процесс / рабочий процесс для каждого потока, за которым вы хотите следить.