#django #cron #celery #cron-task
#django #cron #сельдерей #cron-задача
Вопрос:
Сельдерей и django работают не так, как ожидалось.
Я пытаюсь создать небольшую задачу, чтобы лучше узнать Сельдерей.
Реализована простая печать для анализа выходных данных, и ничего не происходит.
Что я делаю не так.
Следуйте приведенному ниже коду.
Благодарю вас за внимание.
инициализация
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
Задача
from __future__ import absolute_import, unicode_literals
from celery import task
@task()
def task_number_one():
print('okokokokokokokokok')
Сельдерей
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sistema.settings')
app = Celery('sistema')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
Настройка
CELERY_BROKER_URL = 'redis://REDIS:6379'
CELERY_RESULT_BACKEND = 'redis://REDIS:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'America/Recife'
CELERY_BEAT_SCHEDULE = {
'task-number-one': {
'task': 'base.tasks.task_number_one',
'schedule': 30.0
}
}
Команда
celery -A sistema worker -l info amp;amp; celery -A sistema beat -l info
Комментарии:
1. Не могли бы вы опубликовать последний вывод cmd? при запуске последней команды отображается список задач.
task_number_one
должно присутствовать в нем. Если нет, сельдерей не может найти задачу.2. Вы должны запустить command
celery -A sistema beat -l info
в отдельном терминале. Также в документации говорится, что вы должны использовать@shared_task
вместо@task
декоратора.3. Netro — [tasks] . base.tasks.task_number_one . sistema.celery.debug_task
4. пако — я работаю отдельно и с share_task продолжаю без вывода. Ничего не происходит.
5. я бы предложил выполнить задачу без такта. Если это работает, используйте celery beat.