>source

나는 다음과 같은 질문을 보았다.이 하나와 다스기타. 그러나 그들 중 어느 것도 작동하지 않는 것 같습니다.

나는 아무것도 반환하지 않는 다음과 같은 shared_task가 있습니다.

@shared_task
def rename_widget(widget_id, name):
    w = Widget.objects.get(id=widget_id)
    w.name = name
    w.save()

난 노력 했어 self.request.idcurrent_task.request.id 하지만 둘 다 돌아왔다없음. 내 셀러리 버전은 5.0.4이고 django 버전은 3.1.1입니다. 저는 Rabbitmq를 메신저로 사용하고 있습니다.

  • 답변 # 1

    설정 문제 또는 작업 호출 방법처럼 보입니다. 컨텍스트를 더 많이 알지 못하면 말하기 어렵습니다. 아마도 메서드를 바인딩해야합니까? 그 솔루션을 스케치했습니다.

    tasks.py

    from celery import shared_task
    from demoapp.models import Widget
        @shared_task(bind=True)
        def rename_widget(self, widget_id, name):
            print(self.request.id) 
            w = Widget.objects.get(id=widget_id)
            w.name = name
            w.save()
    
    

    views.py 또는 다른 곳 :

    from tasks import rename_widget
    result = rename_widget.delay(1, 'new_name')
    
    

    그것이 문제가 아니라면, 아이디어를위한 전체 작동하는 Django 예제 설정을 확인하겠습니다. https://github.com/celery/celery/tree/master/examples/django/

  • 이전 css - 하위 요소의 Z- 색인 문제
  • 다음 python - pip install uvloop로 인해 권한 거부 오류가 발생합니다