@Fanat1kk

Как правильно запускать потоки?

Привет. Посаветуйте пожалуйста как сделать)))
Смотрите у меня есть база в которой хранятся аккаунты. В базе у каждого аккаунта есть поле inwork которое имеет значение 1/0, работает/не работает. При запуске скрипта он забирает из базы все аккаунты у которых inwork = 1 и запускает каждый аккаунт в отдельном потоке ( на скрине я покажу эту функцию). И когда я допустим добавляю ещё аккаунт в базу со значением inwork=1, то для того чтоб он запустился мне нужно скрипт перезапустить и точно также если хочу остановить какой-то аккаунт.
Подскажите пожалуйста каким способом можно сделать чтобы скрипт во время работы собирал из базы информацию о работающих аккаунтах и в случаи если где-то менялся inwork то этот поток который работает с этим аккаунтом останавливался или наоборот запускался новый поток когда inwork=1.
Я думаю что должно быть примерно так: Основной поток каждые секунд 30 проходит по базе и в случаи изменения или запускает поток новый или убивает старый, только вот как добиться такой работы с потоками не пойму)))
Направте пожалуйста в нужное русло.

def start():
    logging.debug('Meтод start')
    accounts = getAcountInWork()
    logging.info('Количество аккаунтов в работе {}'.format(len(accounts)))

    with ThreadPoolExecutor(max_workers=len(accounts)) as execute:
        execute.map(nonStop, accounts)
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@deliro
1. Не надо запускать столько потоков, сколько аккаунтов. Хватит штук десяти.
2. Твоя задача просто очень легко решается через async/await, и достаточно сложно через потоки
3. Изучи паттерн producer-consumer
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы