При асинхронной обработке фото нужно сначала сохранить файл в БД,
потом запустить Celery task. Иначе task не найдет файл.
Изменения:
- BasePhoto.save() теперь сохраняет файл перед запуском task
- Исправлена проблема 'Photo has no image file' в Celery worker
🤖 Generated with Claude Code
35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
"""
|
||
Celery configuration for myproject with django-tenants support.
|
||
|
||
IMPORTANT: В мультитенантной среде все задачи должны:
|
||
1. Получать schema_name в параметрах
|
||
2. Активировать нужную схему через connection.set_schema()
|
||
3. Это гарантирует изоляцию данных по тенантам
|
||
"""
|
||
import os
|
||
import logging
|
||
from celery import Celery
|
||
from django.conf import settings
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
# Указываем Django settings module
|
||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
|
||
|
||
# Создаем Celery app
|
||
app = Celery('myproject')
|
||
|
||
# Загружаем конфигурацию из Django settings с префиксом CELERY_
|
||
app.config_from_object('django.conf:settings', namespace='CELERY')
|
||
|
||
# Автоматическое обнаружение tasks.py в приложениях
|
||
# Это позволяет использовать @shared_task в любом приложении
|
||
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
|
||
|
||
|
||
@app.task(bind=True, ignore_result=True)
|
||
def debug_task(self):
|
||
"""Тестовая задача для проверки работы Celery"""
|
||
print(f'Request: {self.request!r}')
|
||
logger.info('Celery is working!')
|