Привет!
У меня небольшой затык с потоками Python.
Я использую обычный модуль threading для запуска функции в виде "демона". при старте сервера на Flask.
Сама функция имеет внутри себя еще логику и ряд функции вызываемой этой логикой перемешанных друг с другом.
Получается так что в логе я вижу дикую смесь асинхронных запусков функции все логики которую я прописал.
Протестировав запуск моей функции отдельно по частям и вместе без внесения в threading все отлично работает.
Моя функция делает примерно следующее (ОСТОРОЖНО ПСЕВДОКОД):
def start()
if "файл есть" == 'файл есть':
while True :
записываем данные в файл с последней точки (вызываем функцию b1).
else:
создаем файл (вызываем функцию a1)
наполняем файл данными (вызываем функцию a2)
логика проверки даты и времени в записях и т.д. (вызываем функцию a3)
while True :
бесконечный цикл наполнения файла последней информацией.(вызываем функцию b1)
flow1 = Thread(target=start, daemon=True)
flow1.start()
Что я вижу в логах при запуске потока: Файла нет -> идет ветка создания файла -> резко в логе появляется информация из логической ветки выше (та где при условии файл есть)
О_о и начинает наполнять последними данными. (параллельно идет ветка первичного наполнения файла данными. ) Далее завершая работа функции создания-первичного наполнения и продолжается обычная работа бесконечного цикла по обновлению.
Итог данные тупо перемешиваются в полный хаос, в логах та же беда, а дальше цикл наполняет его нормально как мне нужно.
Хотел бы узнать как управлять этой асинхронностью когда у тебя 1 всего то 1 поток?
Или есть какой то нюанс при работе с внутренними функциями?
Буду благодарен за практические примеры решения подобной проблемы.