Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749

Celery + Django запуск задач по расписанию

28.03.2022, 13:35. Показов 3699. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Юзаю чистый celery (без django-celery-beat).

Конфиг:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
app.conf.beat_schedule = {
    'start_all_parsers': {
        'task': 'core.tasks.start_parsers',
        'schedule': crontab(minute='*/2')
    },
    'show_now': {
        'task': 'config.celery.print_now',
        'schedule': crontab(minute='*/2')
    },
    'show_now_2': {
        'task': 'config.celery.print_now',
        'schedule': crontab(minute='*/2')
    },
}
В воркере все задачи создаются:

Code
1
2
3
4
[tasks]
  . config.celery.print_now
  . core.tasks.add_article_task
  . core.tasks.start_parsers
Но выполняются по расписанию тока одна (которая два раза):

Code
1
2
3
4
5
6
[2022-03-28 14:12:00,004: INFO/MainProcess] Task config.celery.print_now[c1f9c6ca-65d5-462d-b48c-e357e343d4d0] received
[2022-03-28 14:12:00,004: WARNING/MainProcess] 2022-03-28 14:12:00.004619
[2022-03-28 14:12:00,005: INFO/MainProcess] Task config.celery.print_now[c1f9c6ca-65d5-462d-b48c-e357e343d4d0] succeeded in 0.0s: None
[2022-03-28 14:12:00,006: INFO/MainProcess] Task config.celery.print_now[82c7c925-f9f3-49dc-a331-5ee5a0fe0955] received
[2022-03-28 14:12:00,006: WARNING/MainProcess] 2022-03-28 14:12:00.006620
[2022-03-28 14:12:00,007: INFO/MainProcess] Task config.celery.print_now[82c7c925-f9f3-49dc-a331-5ee5a0fe0955] succeeded in 0.0s: None
Что блин не так? ))

Добавлено через 22 минуты
Дополню логом планировщика:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[2022-03-28 14:30:29,484: DEBUG/MainProcess] Current schedule:
<ScheduleEntry: start_all_parsers core.tasks.start_parsers() <crontab: */2 * * * * (m/h/d/dM/MY)>
<ScheduleEntry: show_now config.celery.print_now() <crontab: */2 * * * * (m/h/d/dM/MY)>
<ScheduleEntry: show_now_2 config.celery.print_now() <crontab: */2 * * * * (m/h/d/dM/MY)>
[2022-03-28 14:30:29,484: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2022-03-28 14:30:29,487: INFO/MainProcess] Scheduler: Sending due task show_now_2 (config.celery.print_now)
[2022-03-28 14:30:29,505: DEBUG/MainProcess] beat: Synchronizing schedule...
[2022-03-28 14:30:29,506: DEBUG/MainProcess] config.celery.print_now sent. id->50a6fb63-422b-4e7f-b2c3-8b553e088e67
[2022-03-28 14:30:29,507: INFO/MainProcess] Scheduler: Sending due task show_now (config.celery.print_now)
[2022-03-28 14:30:29,507: DEBUG/MainProcess] config.celery.print_now sent. id->575ea591-9199-4338-be55-1467effd7ea8
[2022-03-28 14:30:29,508: DEBUG/MainProcess] beat: Waking up in 1.51 minutes.
[2022-03-28 14:32:00,000: INFO/MainProcess] Scheduler: Sending due task show_now (config.celery.print_now)
[2022-03-28 14:32:00,001: DEBUG/MainProcess] config.celery.print_now sent. id->6654de50-c10c-45e9-a14d-97f9ba54306f
[2022-03-28 14:32:00,001: INFO/MainProcess] Scheduler: Sending due task show_now_2 (config.celery.print_now)
[2022-03-28 14:32:00,002: DEBUG/MainProcess] config.celery.print_now sent. id->57ecba7a-b4f2-4ddc-af17-d4a9b080d6d1
[2022-03-28 14:32:00,002: DEBUG/MainProcess] beat: Waking up in 2.00 minutes.
Получается, что задачу start_parsers он видит, но не посылает. Как так-то? )))

Добавлено через 1 час 0 минут
Разобрался с запуском. Убил файлы БД шедулера, перезапустил. Новая трудность с параметрами 'schedule': crontab(minute='*/10') запускается, а с параметрами 'schedule': crontab(minute=30, hour=15) - нет. Хотя тут наверное дело в timezone.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2022, 13:35
Ответы с готовыми решениями:

Django+celery получение результатов фоновых задач
Добрый день! Из views.py запускаю ресурсозатратные отчеты, результаты отображаю в html или выгружаю в excel. Проблема - долго ждать. ...

Django и celery shared_task
Как запустить shared_task в асинхронном режиме? Есть у меня celery таска from celery import shared_task import requests ...

Не устанавливается пакет celery в контейнер django
Здравствуйте! Есть файл requirements.txt. Там все зависимости, которые должны быть установлены. Почему-то celery устанавливаться не хочет ...

1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
11.07.2023, 05:15
settings.py

Python
1
2
CELERY_ENABLE_UTC = False
CELERY_TIMEZONE = 'Asia/Omsk'
celery.py:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import os
 
from celery import Celery
from celery.schedules import crontab
 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sendings.settings')
 
app = Celery('sendings')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
 
app.conf.beat_schedule = {
    'sending_to_emails': {
        'task': 'app.tasks.sendings',
        'schedule': crontab(minute=36, hour=22)
    },
}
Но ничего не хочет запускаться в установленное время. В контейнере время стоит по часовому поясу "Asia/Omsk"


Если в расписании crontab указать точное время по UTC равное местному и запустить сервер в приблизительное время, чуть ранее, чем должно быть запущено задание, то celery ведёт себя как сумасшедший, запуская задание по нескольку раз до бесконечности.

Добавлено через 3 минуты
Причём в логах celery стоит точное время, местное.

Добавлено через 35 минут
Celery задачу запустил за 6 минут до начала по расписанию. От времени по расписанию прошло ещё семь минут, всё ещё выполняется. Это какой-то треш.

Добавлено через 1 час 24 минуты
Запуск задания происходит через каждую четвёртую сотую секунды - Б Р Е Д

Добавлено через 17 минут
В контейнере celery woker не могу посмотреть логи задач. Команда
Bash
1
celery inspect scheduled
зависает.
Аварийно завершается VCode из-за множества сообщений в консоли.

Это что-то инфернальное.

Добавлено через 46 минут
Очередь не очищается, получается?

Добавлено через 3 часа 17 минут
celery_beat запускает несколько экземпляров одной задачи через 4 сотые секунды.

Добавил эту переменную в настройки settings.py:

Python
1
DJANGO_CELERY_BEAT_TZ_AWARE = True
Не помогло. В логировании настоящее точное время указано. Запуск задач идёт всё-равно по времени UTC, несмотря на настройки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2023, 05:15
Помогаю со студенческими работами здесь

Уведомления определенным пользователям по расписанию (Django)
В определенной таблице хранится с расписанием список задач для определенной категории пользователей. Как сделать, чтобы при наступлении по...

Запуск по расписанию
На Mac OS есть возможность запуска программ по расписанию через календарь. Столкнулся с проблемой: Ввожу время, выбрал программу,...

Запуск по расписанию
Добрый день! Есть задача, запускать скрипты 5 шт. по расписанию, при этом расписания разные, вот что смог придумать: функции запускаются...

Запуск скрипта по расписанию
Добрый день! Назначил в планировщике задач запуск скрипта (время работы 3 часа) на 1 час ночи, судя по протоколу он запустился и тут...

Запуск обработок по расписанию
всем доброго времени суток... такая задачка... имеем УТ-шку. к ней есть внешняя обработка (несколько табличных частей + кнопка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru