Django сохраняет сообщения через celery
У меня есть конкретный случай использования, когда я пишу текст для записи в блоге в панели администратора. Затем я хочу сгенерировать вставки для поста.
Я делаю это в admin.py
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'created_at')
readonly_fields = ('embeddings_calculated','emebddings_updated_at')
def save_model(self, request, obj, form, change):
if not obj.meta_title:
obj.meta_title = obj.title
obj.meta_description = obj.content[:160]
super().save_model(request, obj, form, change)
print("django post id",obj.id)
post = get_object_or_404(Post, id=obj.id)
print("django post title",post)
if not change: # if new post not an edit post
task_id = perform_task.delay(obj.id)
result = AsyncResult(str(task_id), app=app)
print("AsyncResultx", result)
print("AsyncResultx_state", result.state)
Вот моя задача с сельдереем
@shared_task()
def perform_task(post_id):
print("celery post id",post_id)
post = get_object_or_404(Post, id=post_id)
print("celery post title",post)
Я получаю эту ошибку
django.http.response.Http404: No Post matches the given query.
Хотя операторы печати, такие как django post id
и django post title
, показывают мне правильный результат. Но проблема заключается в celery. Я не могу увидеть celery post title
в консоли.
Я также пытался
task_id = transaction.on_commit(lambda: perform_task.delay(obj.id))
Но это не сработало так же хорошо. Без сельдерея все работает хорошо, но я хочу использовать сельдерей.