Django periodi c задача сельдерея - PullRequest
0 голосов
/ 02 мая 2020

Я новичок ie в Django и сельдерее. Помогите мне, пожалуйста, я не могу понять, как это работает. Я хочу видеть в своей консоли "Hello world" каждые 1 мин.

tasks.py

from celery import Celery
from celery.schedules import crontab
from celery.task import periodic_task

app = Celery('tasks', broker='pyamqp://guest@localhost//')


@periodic_task(run_every=(crontab(hour="*", minute=1)), ignore_result=True)
def hello_world():
    return "Hello World"

celery.py

from __future__ import absolute_import

import os

from celery import Celery

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test.settings.local")

app = Celery('test')
app.config_from_object('celeryconfig')
app.autodiscover_tasks()


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

init.py

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.

from .celery import app as celery_app

celeryconfig.py

broker_url = 'redis://localhost:6379'
result_backend = 'rpc://'

task_serializer = 'json'
result_serializer = 'json'
accept_content = ['json']
timezone = 'Europe/Oslo'
enable_utc = True

Это простые настройки и код сельдерея, но они не работают = \

celery -A tasks worker -B

И ничего не происходит. Подскажите что я делаю не так? Спасибо!

1 Ответ

0 голосов
/ 04 мая 2020

Вам нужно настроить beat_schedule в вашем celeryconfig.py

from celery.schedules import crontab
beat_schedule = {
    'send_each_minute': {
        'task': 'your.module.path.function',
        'schedule': crontab(),
        'args': (),
    },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...