Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 11, 2016 21:31:54

beivev
Зарегистрирован: 2016-01-11
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Решить проблему с программой; Многопоточность, flask

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

Офлайн

#2 Янв. 12, 2016 02:04:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Решить проблему с программой; Многопоточность, flask

beivev
Есть веб-сервер построенный на Flask
Обычно на Flask пишут веб-приложение, которое размещают на веб-сервере.

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

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



Офлайн

#3 Янв. 12, 2016 09:57:37

beivev
Зарегистрирован: 2016-01-11
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Решить проблему с программой; Многопоточность, flask

Хорошо, понял свои ошибки, постараюсь написать конкретнее.

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

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

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

Отредактировано beivev (Янв. 12, 2016 09:58:31)

Офлайн

#4 Янв. 12, 2016 12:24:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Решить проблему с программой; Многопоточность, flask

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

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

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

А вообще, в лине используется шина (dbus) для передачи сообщений между процессами. Но для этой задачи она, походу, будет слишком тяжеловатой. Надо попроще что-нибудь типа сокетов или таких вот очередей.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version