Как передать и вернуть очередь в и из задачи 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()?

Вернуться на верх