Задача Django Celery не срабатывает в процессе разработки

Я пытаюсь использовать периодические задачи, но не могу заставить их работать.

У меня есть тестовое задание

# handler/tasks.py

from celery import Celery

app = Celery()


@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    # Calls test('hello') every 2 seconds.
    sender.add_periodic_task(2, test.s('hello'), name='add every 2')


@app.task
def test(arg):
    print(arg)

Селерей настроен

# project dir
# salaryx_django/celery.py

from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'salaryx_django.settings')
app = Celery('salaryx_django')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))
# salaryx_django/settings.py

# CELERY STUFF
BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Europe/London'

Рабочие интимизированы

[2022-04-25 14:57:55,424: INFO/MainProcess] Connected to redis://localhost:6379//
[2022-04-25 14:57:55,426: INFO/MainProcess] mingle: searching for neighbors
[2022-04-25 14:57:56,433: INFO/MainProcess] mingle: all alone
[2022-04-25 14:57:56,452: WARNING/MainProcess] /Users/jonas/Desktop/salaryx_django/venv/lib/python3.8/site-packages/celery/fixups/django.py:203: UserWarning: Using settings.DEBUG leads to a memory
            leak, never use this setting in production environments!
  warnings.warn('''Using settings.DEBUG leads to a memory

[2022-04-25 14:57:56,453: INFO/MainProcess] celery@Air-von-Jonas ready.

и Redis ждет подключения

enter image description here

но ничего не происходит...

Проверки здравомыслия

(venv) jonas@Air-von-Jonas salaryx_django % celery -A salaryx_django status
->  celery@Air-von-Jonas: OK
(venv) jonas@Air-von-Jonas salaryx_django % celery -A salaryx_django inspect stats
->  celery@Air-von-Jonas: OK
    {
        "broker": {
            "alternates": [],
            "connect_timeout": 4,
            "failover_strategy": "round-robin",
            "heartbeat": 120.0,
            "hostname": "localhost",
            "insist": false,
            "login_method": null,
            "port": 6379,
            "ssl": false,
            "transport": "redis",
            "transport_options": {},
            "uri_prefix": null,
            "userid": null,
            "virtual_host": "/"
        },
        "clock": "631",
        "pid": 15402,
        "pool": {
            "max-concurrency": 8,
            "max-tasks-per-child": "N/A",
            "processes": [
                15405,
                15406,
                15407,
                15408,
                15411,
                15412,
                15413,
                15414
            ],
            "put-guarded-by-semaphore": false,
            "timeouts": [
                0,
                0
            ],
            "writes": {
                "all": "",
                "avg": "0.00",
                "inqueues": {
                    "active": 0,
                    "total": 8
                },
                "raw": "",
                "strategy": "fair",
                "total": 0
            }
        },
        "prefetch_count": 32,
        "rusage": {
            "idrss": 0,
            "inblock": 0,
            "isrss": 0,
            "ixrss": 0,
            "majflt": 25,
            "maxrss": 61472768,
            "minflt": 27337,
            "msgrcv": 1415,
            "msgsnd": 1109,
            "nivcsw": 1584,
            "nsignals": 0,
            "nswap": 0,
            "nvcsw": 1823,
            "oublock": 0,
            "stime": 0.36823999999999996,
            "utime": 1.8312659999999998
        },
        "total": {},
        "uptime": 631
    }

1 node online.

Вы также должны запустить beat.

Из записи ударов документации

Функция add_periodic_task() добавит запись в настройку beat_schedule за кулисами

.

Простой запуск celery -A salaryx_django beat в другом процессе поможет вам начать работу. Для получения дополнительной информации читайте документацию.

Вернуться на верх