У меня работает приложение CLI на Python, которое использует потоки для выполнения некоторых рабочих. Сейчас я пишу графический интерфейс, используя электрон для этого приложения. Для простых запросов / ответов я использую gRPC
для связи между приложением Python и графическим интерфейсом.
Однако я изо всех сил пытаюсь найти подходящий механизм публикации для передачи данных в графический интерфейс: gRPC
встроенная потоковая передача не будет работать, поскольку она использует генераторы; как уже упоминалось выше, задачи блокировки выполняются с использованием потоков (подклассы threading.Thread
). Также я хотел бы выдавать определенные события (например, прогресс) из этих потоков.
Затем я обнаружил реализацию Flasks
SocketIO, которая, однако, является блокирующим выполнением и, таким образом, не очень подходит для того, что я имею в виду - мне придется снова выполнить два процесса (Flask и мое CLI-приложение). ) ...
Другой пакет, который я нашел, это websockets
, но я не могу понять, как я могу реализовать эту producer()
функцию, которую они упоминают в шаблонах .
Моя последняя идея состояла бы в том, чтобы развернуть систему сообщений на основе брокера, такую как Redis
, или просто переключиться на zmq
без посредников, что немного затрудняет настройку приложения GUI.
Итак, простой вопрос:
Существует ли какая-либо простая структура, позволяющая создать серверную «задачу» в Python, на которую я могу передавать сообщения для публикации?