Задать вопрос
@zven_bpe

Не работает celery задача в блоке if?

Пишу бота на aiogram. Сделал celery таску, но отрабатывает она не всегда. Вот код хэндлера:
@admin_router.message(CreateEvent.time)
async def cmd_create_event_4(message: Message, state: FSMContext, bot: Bot):
    await state.update_data(time=message.text)
    data = await state.get_data()
    await state.clear()
    date = data['date']
    time = data['time']
    year, month, day = (map(int, date.split('/')))
    try:
        hour, minute = (map(int, time.split(':')))
        datetime = f'{date} {time}'
        now = dt.datetime.now()
        event_datetime = dt.datetime(year, month, day, hour, minute)
        diff = event_datetime - now
        seconds = diff.total_seconds()

        if seconds < 0:
            await message.answer(Admin.event_datetime_passed)
        else:
            events_table = EventTable()
            defer1 = 0
            defer3 = 0

            if seconds > ONE_DAY_SECONDS:
                time = await process_data(year, month, day, hour, minute, 1)
                task_1 = start_notificating.apply_async(eta=time,
                                                        expires=seconds,
                                                        kwargs={'event_name' : data['name'],
                                                        'datetime' : f'{date} в {time}',
                                                        'left' : Admin.one_day})
                defer1 = task_1.id
            if seconds > THREE_DAYS_SECONDS:
                time = await process_data(year, month, day, hour, minute, 3)
                task_3 = start_notificating.apply_async(eta=time,
                                                        expires=seconds,
                                                        kwargs={'event_name' : data['name'],
                                                        'datetime' : f'{date} в {time}',
                                                        'left' : Admin.three_days})
                defer3 = task_3.id

            await events_table.add_event(data['name'], datetime, int(seconds), defer1, defer3)
            await message.answer(Admin.event_created_successfully)
    except ValueError:
        await message.answer(Error.invalid_time_passed)

Когда я поместил создание задачи в блок if, она перестала запускаться. Код доходит до условия, оно совпадает, принты из того if блока тоже работают, но задача не выполняется.
Что может быть не так?
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы