2015-06-18 3 views
1

Я старался следовать за документом сельдерея для джанго. Вот моя структура проекта:Периодическая работа сельдерея не работает

├── 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) 
    }, 
} 

и напоминание/task.py файл:

def run(): 
    print('hello') 

при запуске celery -A hiren beat -l debug команду я Бесполезный 't видеть "привет" текст в терминале. Что мне не хватает?

+0

Вы читали: http://celery.readthedocs.org/ru/latest/django/first-steps-with-django.html#using-the-shared-task-decorator? – Brandon

ответ

5

Чтобы создать задачу из любой вызываемой, вам необходимо использовать декоратор task(). Это создаст задачу сельдерея для run().

напоминание/task.py:

from celery import Celery 

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

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

Библиотека сельдерея должен быть обработан перед использованием, данный экземпляр называется приложение (или app для краткости).

Если вы используете «старый» модуль на основе сельдерея API, то вы можете импортировать декоратор задачу так:

from celery import task 

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

Даже если это создаст сельдерея задачу так же, как первый метод, но это не рекомендуется.

Смежные вопросы