Как настроить celery beat для запланированного запуска парсера в проекте Django?

Как запустить celery beat для выполнения задач с определенной периодичностью в Django-проекте? Я ссылкаюсь на репозиторий для запуска парсера и использую команды <code>celery -A servicejob worker --loglevel=info</code> и <code>celery -A servicejob beat --loglevel=info</code>, но ничего не происходит. Хотя воркер видит задачи, запуск через view также не работает. Однако, если запустить задачу через shell или python console, все работает. Что я делаю не так и как это исправить?
  • 12 июня 2024 г. 20:31
Ответы на вопрос 1
Для настройки Celery Beat в Django проекте для запланированного запуска парсера, вам нужно выполнить следующие шаги:

1. Убедитесь, что у вас установлены пакеты Celery и Django-celery-beat:

```
pip install celery django-celery-beat
```

2. Добавьте приложение `django_celery_beat` в `INSTALLED_APPS` вашего проекта в файле `settings.py`:

```python
INSTALLED_APPS = [
    ...
    'django_celery_beat',
    ...
]
```

3. Создайте таблицы для хранения расписания задач Celery Beat:

```
python manage.py migrate
```

4. В вашем проекте создайте файл `celery.py` с настройками Celery:

```python
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings

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

app = Celery('your_project')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
```

5. В файле `settings.py` добавьте настройки для Celery:

```python
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

# Настройки Celery Beat
CELERY_BEAT_SCHEDULE = {
    'run-parser-every-5-minutes': {
        'task': 'path.to.your.parser_task',  # Путь к вашей задаче
        'schedule': 300.0,  # Выполнить каждые 5 минут
    },
}
```

6. Запустите Celery Beat:

```
celery -A your_project beat --loglevel=info
```

Теперь Celery Beat будет выполнять вашу задачу парсера с указанной периодичностью. Проверьте журналы и убедитесь, что задачи выполняются правильно.

Если после выполнения этих шагов что-то не работает, убедитесь, что ваш парсер правильно настроен и что путь к задаче указан верно в настройках Celery Beat. Также, если вы используете Redis в качестве брокера сообщений, убедитесь, что он запущен и доступен.
Похожие вопросы