Python Django芹菜定期任务
我创建了一个简单的django项目来理解芹菜周期性任务是如何工作的。名为“proj”的项目有一个应用程序(名称为“sample”)和一个模型(“Counter”)。计数器模型只有一个整型字段名值。我试图每分钟增加计数器的值1,但无法使其工作。我的文件: 项目/芹菜.pyPython Django芹菜定期任务,python,django,celery,periodic-task,Python,Django,Celery,Periodic Task,我创建了一个简单的django项目来理解芹菜周期性任务是如何工作的。名为“proj”的项目有一个应用程序(名称为“sample”)和一个模型(“Counter”)。计数器模型只有一个整型字段名值。我试图每分钟增加计数器的值1,但无法使其工作。我的文件: 项目/芹菜.py from __future__ import absolute_import, unicode_literals import os from celery import Celery os.environ.setdefaul
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
示例/models.py
from django.db import models
class Counter(models.Model):
value = models.IntegerField(default=0)
示例/views.py
from django.shortcuts import render
from .models import Counter
def index(request):
value = Counter.objects.get(pk=1).value
return render(request, 'sample/index.html', {'value': value})
proj/tasks.py
from celery.schedules import crontab
from proj.celery import app
from .models import Counter
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(
crontab('*', '*', '*', '*', '*'),
my_task())
@app.task
def my_task():
counter = Counter.objects.get(pk=1)
counter.value += 1
counter.save()
我缺少什么?您必须添加任务并在设置文件中注册该任务
我不需要tasks.py中的“setup\u periodic\u tasks”吗?您可以使用periodic task decorator进行设置,这样就不需要在设置文件中设置。
CELERY_BEAT_SCHEDULE = {
'task-number-one': {
'task': 'app1.tasks.task_number_one',
'schedule': crontab(minute=59, hour=23)
},
'task-number-two': {
'task': 'app2.tasks.task_number_two',
'schedule': crontab(minute=0, hour='*/3,10-19')
}
}