下面的代码适用于
全局变量
num
我在
Django 3.1.7项目
和
芹菜5.1.2
.*然而,有时全局变量在具有不同代码的芹菜任务之间不能正常工作,因此您应该避免在芹菜任务中使用全局变量:
# "store/tasks.py"
from celery import shared_task
num = 0
@shared_task
def test1():
global num
num += 1
return num
@shared_task
def test2():
global num
num += 1
return num
@shared_task
def test3():
global num
num += 1
return num
# "store/views.py"
from django.http import HttpResponse
from .tasks import test1, test2, test3
def test(request):
test1.delay()
test2.delay()
test3.delay()
return HttpResponse("Test")
输出:
Task store.tasks.test1[c222183b-73be-4fba-9813-be8141c6669c] received
Task store.tasks.test1[c222183b-73be-4fba-9813-be8141c6669c] succeeded in 0.0s: 1
Task store.tasks.test2[aa4bc9e5-95c6-4f8b-8122-3df273822ab5] received
Task store.tasks.test2[aa4bc9e5-95c6-4f8b-8122-3df273822ab5] succeeded in 0.0s: 2
Task store.tasks.test3[472727f3-368f-48ad-9d49-72f14962e8c5] received
Task store.tasks.test3[472727f3-368f-48ad-9d49-72f14962e8c5] succeeded in 0.0s: 3