(Django) Постоянное выполнение задачи асинхронного сервера в фоновом режиме - PullRequest
0 голосов
/ 08 мая 2018

Я хочу разрешить запуск класса на моем сервере, который содержит подключенный разъем Bluetooth и постоянно проверяет поступающие данные, которые затем могут быть интерпретированы.В принципе структура класса будет выглядеть следующим образом:

Интерпретатор:

-> connect (инициализирует класс и запускает цикл)

-> цикл (непрерывно выполняется вbackground)

-> disconnect (останавливает цикл)

Этот класс должен быть инициирован в какой-то момент и затем выполняться непрерывно в фоновом режиме, время от времени для запроса http, возможно, потребуются данные изатрибуты класса, но он должен работать сам по себе.

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

1 Ответ

0 голосов
/ 08 мая 2018

Django сам по себе не поддерживает фоновые процессы - все запрос - ответ цикл основан.

Я не знаю, есть ли у того, что вы пытаетесь сделать, даже специальное имя. Но наверняка - это возможно. Но не связывайте себя с Джанго этим решением.

Я бы выполнил это, запустив отдельный процесс Python, который отвечал бы за поддержание соединения с устройством и по запросу возвращал требуемые данные каким-либо образом.

Единственная трудность, с которой вы столкнетесь, - это определить, как общаться с этим процессом из Django. Поскольку, как я уже сказал, django основан на запросах, это вторичное приложение может предоставлять некоторые данные вашему приложению Django - оно может выполнять любое из следующих действий:

  • Предоставить простой API HTTP Rest
  • Предоставить сокет UNIX, который будет просто возвращать данные сразу после подключения
  • Постоянно выгружать данные в какой-нибудь файл / базу данных / mmap / очередь, которые Django мог прочитать
...