В этой статье мы рассмотрим, как настроить задачу Celery для автоматической генерации и публикации статей в блоге на сайте, построенном на Django, с использованием API нейросети DeepSeek. Это позволит автоматизировать процесс наполнения контентом, минимизируя ручной труд.
Предварительные требования
- Установленный Django-проект с настроенным блогом.
- Celery и Redis (или другой брокер сообщений) для асинхронных задач.
- Доступ к API DeepSeek (ключ API).
- Python-библиотеки:
requests
,celery
,django
.
Шаг 1: Настройка окружения
Убедитесь, что у вас установлены необходимые зависимости. Добавьте их в requirements.txt
:
celery
redis
requests
django
Установите зависимости:
pip install -r requirements.txt
Настройте Redis как брокер сообщений. В файле настроек Django (settings.py
) добавьте:
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Шаг 2: Создание модели для статей
Предположим, у вас есть модель для статей в блоге. Пример модели в blog/models.py
:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(unique=True)
def __str__(self):
return self.title
Убедитесь, что модель зарегистрирована в админке (blog/admin.py
):
from django.contrib import admin
from .models import Article
admin.site.register(Article)
Шаг 3: Настройка Celery
Создайте файл celery.py
в корневой папке проекта:
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
app = Celery('your_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
В __init__.py
корневой папки добавьте:
from .celery import app as celery_app
__all__ = ('celery_app',)
Шаг 4: Создание задачи Celery
Создайте задачу для генерации статей через API DeepSeek. В blog/tasks.py
:
import requests
from celery import shared_task
from django.utils.text import slugify
from .models import Article
@shared_task
def generate_article(topic):
# Настройки API DeepSeek
api_key = 'YOUR_DEEPSEEK_API_KEY'
url = 'https://api.deepseek.com/v1/completions'
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
payload = {
'model': 'deepseek',
'prompt': f'Напишите статью на тему "{topic}" для блога. Статья должна быть информативной, объемом около 500 слов.',
'max_tokens': 1000,
'temperature': 0.7
}
# Запрос к API
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
article_data = response.json()
content = article_data['choices'][0]['text'].strip()
title = f"{topic.title()}"
# Сохранение статьи в базе данных
article = Article(
title=title,
content=content,
slug=slugify(title)
)
article.save()
return f"Статья '{title}' успешно создана"
else:
return f"Ошибка API: {response.status_code}"
Замените 'YOUR_DEEPSEEK_API_KEY'
на ваш ключ API DeepSeek.
Шаг 5: Запуск задачи
Для запуска задачи используйте Django shell или создайте представление. Пример в Django shell:
python manage.py shell
from blog.tasks import generate_article
generate_article.delay('Искусственный интеллект в веб-разработке')
Задача будет выполнена асинхронно через Celery. Вы можете проверить результат в админке Django.
Шаг 6: Периодические задачи (опционально)
Чтобы статьи создавались автоматически по расписанию, настройте Celery Beat. Установите:
pip install django-celery-beat
Добавьте в settings.py
:
INSTALLED_APPS += ['django_celery_beat']
Выполните миграции:
python manage.py migrate
Настройте периодическую задачу в админке Django или через код. Пример в blog/tasks.py
:
from celery.schedules import crontab
app.conf.beat_schedule = {
'generate-article-every-day': {
'task': 'blog.tasks.generate_article',
'schedule': crontab(hour=8, minute=0), # Каждый день в 8:00
'args': ('Новая тема для статьи',),
},
}
Шаг 7: Запуск Celery и Celery Beat
Запустите Redis, затем выполните команды в отдельных терминалах:
celery -A your_project worker -l info
celery -A your_project beat -l info
Замените your_project
на имя вашего проекта.
Заключение
Мы настроили задачу Celery для автоматической генерации статей через API DeepSeek и их публикации в блоге на Django. Это решение позволяет автоматизировать создание контента, экономя время и ресурсы. Вы можете расширить функциональность, добавив валидацию контента, категоризацию или уведомления об успешной публикации.
Написать комментарий