【问题标题】:Troubles to set up a simple task设置简单任务的麻烦
【发布时间】:2017-01-30 16:11:07
【问题描述】:

我正在尝试使用djangocelery 设置一个简单的任务(每5 秒打印一次"foo"

假设我有以下项目:

.
├── manage.py
└── proj
    ├── __init__.py
    ├── settings.py
    ├── tasks.py
    ├── urls.py
    └── wsgi.py

tasks.py

from celery import Celery
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')

from django.conf import settings

app = Celery('tasks', broker='django://127.0.0.1:8000//')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

@app.task
def test():
    print("FOO")

还有 settings.py :

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'celery',
    'kombu.transport.django',
]

[...]

# Celery :                                                                                                 

CELERYBEAT_SCHEDULE = {
    'test-celery': {
    'task' : 'proj.tasks.test',
        'schedule' : timedelta(seconds=5)
    },
}

CELERY_TIMEZONE = 'Europe/Paris'

proj/__init__.py:

from .tasks import app as celery_app

我迁移,使用 celery -A proj.tasks worker --loglevel=info 启动并启动 celery,我只有两个警告与此版本 (3.1.23) 的泡菜使用有关,settings.DEBUGTrue。但芹菜似乎工作。我还使用manage.py 启动我的开发服务器。

那么为什么我的任务 (test()) 没有运行?

【问题讨论】:

    标签: django python-3.x celery django-1.9


    【解决方案1】:

    您需要运行 Celery Beat。比如这样:

    celery -A proj worker -l info -B

    【讨论】:

    • 就是这样!谢谢你。 :)
    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2022-01-24
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多