Как передать и вернуть очередь в и из задачи celery в Django?
Я пытаюсь передать и вернуть очередь q
в и из задачи test()
в Django, как показано ниже:
# "views.py"
import queue
from .tasks import test
from django.http import HttpResponse
def call_test(request):
q = queue.Queue()
q.put(0)
test.delay(q) # Here
return HttpResponse("Call_test")
# "tasks.py"
from celery import shared_task
@shared_task
def test(q):
q.queue[0] += 1
return q # Here
Но, я получил ошибку ниже:
Объект типа Queue не является JSON сериализуемым
Итак, я использовал __dict__
с очередью q
, как показано ниже:
# "views.py"
import queue
from .tasks import test
from django.http import HttpResponse
def call_test(request):
q = queue.Queue()
q.put(0)
test.delay(q.__dict__) # Here
return HttpResponse("Call_test")
# "tasks.py"
from celery import shared_task
@shared_task
def test(q):
q.queue[0] += 1
return q.__dict__ # Here
Но, я получил ошибку ниже:
Объект типа deque не является JSON сериализуемым
Итак, как я могу передать и вернуть очередь q
в и из задачи test()
?