Приветствую, немного пользовался потоками, но не хватает окончательного понимания как с ними совладать.
python3 + django 1.9
При старте сервака стартует 1 главный поток и с него 2 дочерних, как это выглядит
def scheduled():
while True:
# выполняется некоторая фильтрация по бд в итоге получаем список send, который передаем дочернему потоку
t2 = threading.Thread(target=sending, args=[send])
t2.start()
t3 = threading.Thread(target=statistics)
t3.start()
t = threading.Thread(target=scheduled)
t.start()
Все это работает, может правда и холиварно написано.
Вся эта штука варится, но когда происходит пул нового кода или вручную перезапускаю сервак, подсчеты, которые выполняются в потоках сбиваются и выдают ужасающие показатели, в основном это сбор статистики.
- Можно ли безопасно остановить выполнение потоков? Чтобы данные которые обрабатываются корректно сохранились.
- Так же рассматривал другие варианты реализации, вынести в отдельный процесс, а возможно и в отдельный мини проект, который будет заниматься сбором статистики.
Цель: Избежать неверных вычислений.
Вообщем что посоветуете дорогие гуру?