Запустите TCP и зацикленный процесс в Python - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать устройство IoT и с нетерпением жду возможности создать что-то вроде этого:

Схема:

  1. Процесс Python, который выполняется в виде цикла для взаимодействия с аппаратными компонентами.
  2. TCP-сервер (Pub-Sub), который принимает команды от своих клиентов и передает их (1)
  3. (1), может взаимодействовать с (2) для публикации события и (2)может взаимодействовать с (1) для управления оборудованием

Вот что я попробовал:

  1. Используя витую, я создал подсобку паба
  2. попробовалдать команду этой службе отправлять события
  3. TCP-прослушиватель на сервере Node.js для взаимодействия с Twisted TCP-сервером

Это то, что я заметил:

Node.Сервер js может правильно отправлять сообщения на Twisted сервер.

Twisted блоки выполняют другой код (схема: 1) после вызова reactor.run(), так как он начинает прослушивать порт.

Я хотел бычтобы оба процесса запускались одновременно и взаимодействовали друг с другом.

Есть ли способ достичь этого без использования многопоточности или многопроцессорности?

1 Ответ

0 голосов
/ 14 января 2019

Я решил это, используя asyncio

Мы можем запустить 2 цикла, которые могут быть асинхронными, с asyncio.sleep в обоих циклах, чтобы другой цикл получил свою очередь на выполнение.

pythondocs также имеет пример tcp-сервера с asyncio, так что это решило мое требование

...