芹菜任务永远不会在django中运行

时间:2013-05-29 09:08:52

标签: django

我在task.py中创建了计划任务但它似乎永远不会运行。我重新启动了我的工作人员,正常任务运行得很好。由于我是新手,我错过了什么,我的设置中是否有我需要的设置?

我没有收到任何错误,这是我的task.py

  from celery.task import Task
  from celery.decorators import task
  from celery.task import PeriodicTask
  from datetime import timedelta

class ProcessScheduledRequests(PeriodicTask):
    run_every = timedelta(minutes=5)

    def run(self, **kwargs):

       process_something()

1 个答案:

答案 0 :(得分:2)

运行定期任务

我不确定您到目前为止尝试了什么,或者您的settings.py文件是什么样的,但这里有一些方法可以让djcelery运行计划任务。

1)在tasks.py中,创建一个任务并使用celery.decorators.periodic_task装饰器。 e.g。

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

@periodic_task(run_every=crontab(hour=”*”, minute=”*”, day_of_week=”*”)) 
def a_periodic_task(): 
        print “Hello World!”

@celery.decorators.periodic_task(run_every=datetime.timedelta(minutes=5))
def a_periodic_task(): 
        print “Hello World!”

2)在celery.conf文件中,使用CELERYBEAT_SCHEDULE设置,如下所示:

from datetime import timedelta

CELERYBEAT_SCHEDULE = {
    "runs-every-30-seconds": {
        "task": "tasks.add",
        "schedule": timedelta(seconds=30),
        "args": (16, 16)
     },
}

您可以在periodic task documentation

中详细了解相关信息

虽然请记住你必须在beat mode开始芹菜:

python manage.py celeryd -B

并检查您是否完成了所有installation steps,包括将djcelery添加到INSTALLED_APPS并运行python manage.py syncdb(或python manage.py migrate djcelery如果您&# 39;重新使用南方)

部署

celery documentation有一个很棒的部分可以帮助您部署芹菜流程,包括example django configuration for beat mode

来自文档:

# Where the Django project is.
CELERYBEAT_CHDIR="/opt/Project/"

# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings"

# Path to celerybeat
CELERYBEAT="/opt/Project/manage.py celerybeat"

# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"