芹菜周期性任务不起作用

时间:2015-06-18 15:53:08

标签: python django celery

我试图跟随芹菜doc为django。这是我的项目结构:

├── hiren
│   ├── celery_app.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── reminder
│   ├── admin.py
│   ├── __init__.py
│   ├── migrations
│   ├── models.py
│   ├── serializers.py
│   |── task.py
│   |── tests.py
│   |── views.py

这是我的settings.py文件:

BROKER_URL = 'redis://localhost:6379/4'
CELERYBEAT_SCHEDULE = {
    'run-every-5-seconds': {
        'task': 'reminder.task.run',
        'schedule': timedelta(seconds=5),
        'args': (16, 16)
    },
}

和reminder / task.py文件:

def run():
    print('hello')

当我运行celery -A hiren beat -l debug命令时,我没有看到"你好"终端中的文字。我错过了什么?

1 个答案:

答案 0 :(得分:5)

要从任何可调用对象创建任务,您需要使用task()装饰器。这将为run()创建一个芹菜任务。

<强>提醒/ task.py:

from celery import Celery

app = Celery('tasks', broker='redis://localhost')

@app.task
def run():
    print('hello')

Celery库必须在使用前进行实例化,此实例称为应用程序(或简称为app)。

如果您使用的是基于“旧”模块的celery API,那么您可以像这样导入任务装饰器:

from celery import task

@task
def run():
    print('hello')

即使这会像第一种方法一样创建芹菜任务,但不建议这样做。