Я использую Django для создания веб-сервера, который контролирует цены на акции. Поэтому я хочу, чтобы задача (обновление цены) возникала каждые 5 секунд, при этом журнал консоли сообщал мне об обновлении. Почему сельдерей не напишет на консоль, как спросили?Сельдерей не выполняет запланированную, повторяющуюся задачу
Моя структура файла:
├── Project
│ ├── celery.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── Application
│ ├── admin.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
│ ├── serializers.py
│ |── tasks.py
│ |── tests.py
│ |── views.py
Моя установка сельдерея в settings.py:
# Celery
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_TASK_RESULT_EXPIRES = 3600
# Celery repeating tasks
CELERYBEAT_SCHEDULE = {
'notify-every-10-seconds': {
'task': 'Main.tasks.update',
'schedule': timedelta(seconds=10),
},
}
И сама задача:
from __future__ import absolute_import
from celery import shared_task
from .models import NasdaqShare
@shared_task
def update():
print('Updated!')
При запуске работник сети сельдерея, используя в базе данных Django, как представляется, даже список Application.tasks.update отображается как задача для запуска.
Почему я не вижу ничего напечатанного на консоли тогда?
Если вы хотите получить больше информации, то дайте мне знать.
Сельдерей пишет на консоль, где вы запускаете ее, а не на консоль/stdout, откуда вы отправляете сообщение. Как вы ведете сельдерей на производстве? В качестве собственного демонизированного процесса с использованием celeryd, с супервизором, вы найдете результат в связанных журналах. Если вы можете предоставить дополнительную информацию о своей настройке. Вам также может потребоваться установить соответствующий уровень loglevel и запустить celery -l info. –
Вы используете экземпляр сельдерея в режиме бит? Если нет, запланированные задачи никогда не будут подняты. –
Falk, я запускаю сельдерей с терминала в моей IDE, где он отображает баннер и сбор информации. Появится ли сообщение в том же терминале? – jacksterooney