Могут ли Flask или Django обрабатывать параллельные задачи?

Что я пытаюсь сделать: У меня есть датчик, который постоянно считывает данные. Мне нужно выводить эти данные в пользовательский интерфейс при каждом появлении данных. Пока выполняется вышеупомянутая задача, пользователь должен иметь возможность записывать данные в датчик. В идеале обе эти задачи должны/могут выполняться одновременно. В настоящее время программа написана на flask, но если django подойдет лучше (или сторонний продукт), я готов перейти на него. Примечание: этот сайт никогда не будет развернут, поэтому не стоит беспокоиться об этом. Единственным пользователем буду я, запускающий программу со своего ноутбука.

Я потратил много времени на изучение асинхронных функций и корутинов во flask; однако я не видел никаких четких указаний на то, возможно ли что-то подобное.

Не ищем построчного решения. Скорее, способ (асинхронный, потоковый и т.д.) настроить код так, чтобы вышеупомянутые задачи были возможны. Любая помощь приветствуется, спасибо.

Я парень из Django, поэтому я расскажу, что, по моему мнению, может быть возможным

В Django есть декоратор @start_new_thread, который можно наложить на любую функцию, и она будет выполняться в потоке.

  • Вы можете сделать представление, отправить в него POST с помощью Javascript/Ajax и запустить поток для связи с датчиком, используя данные, отправленные POST.
  • .
  • Вы также можете сделать потоковую функцию, которая будет считывать данные с датчика.
    • Это может быть команда управления или кнопка "start", которая постит в представление, которое затем запускает поток
    • .

Примечание: Необходимо сделать Locks или какую-то другую логику, чтобы два потока не конфликтовали при чтении/записи

  • Может быть, это один поток, который читает/пишет в датчик, и каждый цикл он проверяет, есть ли что записывать (существование + содержимое файла? Может быть, запись в базу данных?

По поводу пользовательского интерфейса, скажем, веб-страницы. Лучше всего было бы использовать Websockets, но поскольку вы единственный, кто будет использовать это, вы можете просто написать Javascript/Ajax, который будет пинговать представление каждый x seconds и отображать новые данные на веб-странице

  • Примечание: это по сути то, что делают вебсокеты, пингуя каждые x секунд
  • .

Теперь общим является Javascript/Ajax, это делается для того, чтобы страница не обновлялась, и вы могли постоянно видеть поступающие данные без обновления страницы.

Возможно, вы можете сделать все это во Flask, если найдете похожую возможность работы с потоками и просто добавите немного javascript во фронтенд

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

Вернуться на верх