Мне нужно запланировать задание на запуск с понедельника по субботу.Я скачал django-сельдерей, чтобы выполнить задачу.Я следовал учебному пособию на сайте Celery и использовал и просмотрел несколько сообщений о переполнении стека, например: здесь & здесь
Я сделал микс и сопоставил с вышеупомянутыми постами и с этими двумя великолепными уроками: Rhatore и Freitas
Это моя структура папок:
Application
| apps
| app1
| __init__.py
| tasks.py
| urls.py
| views.py
| Application
| __init__.py
| celery.py
| settings.py
| urls.py
| wsgi.py
Settings.py
INSTALLED_APPS = [
'django_celery_beat',
'apps.app1',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_RESULT_BACKEND = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'
__ init __. Py В init в приложении
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
from .celery import app as celery_app
__all__ = ('celery_app',)
celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Application.settings')
app = Celery('Application')
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))
tasks.py - для простоты я сократил задачу до простой команды печати
from celery import shared_task
from celery.utils.log import get_task_logger
from celery.schedules import crontab
from celery.task import periodic_task
from celeryapp.emails import send_feedback_email
from django.http import HttpResponse
from .models import *
logger=get_task_logger(__name__)
@periodic_task(run_every=crontab(hour=21, minute=32, day_of_week=0-5))
def simple_print():
print("Hello World!")
Я запустил:
celery -A Application -1 info
А потом python manage.py runserver
21:32 UTC прошло, и он не печатал.Я ожидал увидеть «Hello World», напечатанный в 21:32 UTC в терминале согласно задаче, указанной в tasks.py.Это не печатать.
Я также запускал:
celery -A Application worker -l info
celery -A Application beat -l info
python manage.py runserver
в разных терминалах.Он не выполнил задачу.
Руководство будет высоко ценится.