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

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

28.03.2022, 13:35. Показов 3654. Ответов 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
Сообщений: 558
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru