Найти - Пользователи
Полная версия: Решить проблему с программой; Многопоточность, flask
Начало » Python для новичков » Решить проблему с программой; Многопоточность, flask
1
beivev
Здравствуйте!
Помоги мне решить некоторые проблемки. Суть всей программы:
Приложение(0) загружает данные в массив из файла, в котором хранится вся информация о настройках. Есть веб-сервер построенный на Flask, через который можно изменять настройки в массиве и отправлять данные в ком порт. Необходимо запустить еще одно приложение(1), которое так же могло изменять этот массив и так же отправлять данные в ком порт. Приложение(1) работает циклично, просто опрашивает в зависимости от ответов принимает решение и идет к другому устройству .
Мой вариант как это сделать.
Приложение(0) читает данные и все, далее приложение(1) работает постоянно, но как только с веб-сервера приходит запрос, то оно останавливается, сервер обрабатывает запрос и ждет еще секунд 10-15, если нет больше запросов, то снова запускается приложение(1). Можно и без времени пришел запрос, обработали, дальше пошли.
Основная проблема я не знаю как это все организовать, все это связано с многопоточностью, а я в ней вообще ноль. Может по рекомендуете хорошую доступную литературу или же поможете набросать каркас, объясните, что и как связано, как включать еще новые звенья. Питон изучаю недавно, логику программы разработать мне не сложно, сложнее написать ее на этом языке.
py.user.next
beivev
Есть веб-сервер построенный на Flask
Обычно на Flask пишут веб-приложение, которое размещают на веб-сервере.

beivev
но как только с веб-сервера приходит запрос
Какой запрос приходит с веб-сервера? Это веб-сервер принимает запросы от клиентов, обрабатывает их и посылает клиентам ответы.

Путаешься в понятиях.
Объясни конкретно, что за приложения, что за сервер, что за данные и в чём задача.
beivev
Хорошо, понял свои ошибки, постараюсь написать конкретнее.

Приложение(0) должно загружать настройки из файла.
Приложение(1) на основе этих настроек производит опрос нескольких устройств через ком порт по кругу, в случаях ошибки отправляет смс через 3G модем(но это пока в планах, модем ищу чтобы разобраться с ним).
Приложение(3) написанное на Flask, в котором можно изменять настройки для приложения(1), и отправлять команды в ком порт. (мне кажет я здесь опять запутался)

Теперь о самих командах:
http://mattrichardson.com/Raspberry-Pi-Flask/
За пример взят Project: WebLamp. Только там изменяется состояние пинов на Raspberry Pi, а мне нужно на Arduino, через ком порт, RS485. Так пользователь выбирает, например, включить свет в веб-интерфейсе, сервер обрабатывает запрос и дает команду Arduino. Но при этом в веб-интерфейсе будет пункт настройки, сервер так же должен обработать такого рода запрос, внести необходимые изменения в файл и данные приложение(1), чтобы ничего не перезапускать.

Вчера на форуме нашел Celery, распределение задач, может и через него как-то можно? Проблема в том что приложения имеют доступ к одни и тем же данным, и не хотелось бы чтобы они одновременно к ним обращались.

py.user.next
beivev
Вчера на форуме нашел Celery, распределение задач, может и через него как-то можно?
Да скорее всего.

Вот ещё есть способ передачи сообщений
https://en.wikipedia.org/wiki/RabbitMQ

Вот список подобных
https://en.wikipedia.org/wiki/Message_broker

А вообще, в лине используется шина (dbus) для передачи сообщений между процессами. Но для этой задачи она, походу, будет слишком тяжеловатой. Надо попроще что-нибудь типа сокетов или таких вот очередей.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB