使用Django和Celery进行异步任务处理

2023-04-11 00:00:00 django celery

Django是一个优秀的Web框架,而Celery则是一个分布式任务队列。结合起来使用,可以极大地提高应用的性能和稳定性。

下面是具体的步骤和代码演示:

  1. 安装所需的库
pip install Django
pip install celery
  1. 在Django项目中配置Celery

在Django项目的settings.py文件中添加以下配置:

# Celery配置
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'

CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CELERY_TIMEZONE = 'Asia/Shanghai'

其中,CELERY_BROKER_URL和CELERY_RESULT_BACKEND分别是任务队列和结果存储的地址。

  1. 编写异步任务

在Django项目中新建一个tasks.py文件,编写异步任务的代码:

from celery import shared_task
import time

@shared_task
def task_demo(string):
    time.sleep(10)
    return string.upper()

这个例子中,异步任务将会在后台等待10秒钟,然后返回一个大写的字符串。

  1. 启动Celery

在项目根目录下执行以下命令:

celery -A myproject worker -l info

其中,myproject是你的Django项目的名称。

  1. 在Django视图函数中调用异步任务

在Django项目中的views.py文件中,编写调用任务的代码:

from django.shortcuts import render
from .tasks import task_demo

def index(request):
    result = task_demo.delay('pidancode.com')
    return render(request, 'index.html', {'result': result})

这个例子中,异步任务将会被调用,并返回一个异步结果对象。

  1. 在模板中显示异步结果

在Django项目中的index.html模板中,编写显示异步结果的代码:

{% if result %}
    <p>{{ result.status }}</p>
    <p>{{ result.result }}</p>
{% endif %}

这个例子中,模板将会显示异步任务的状态和结果。

以上就是使用Django和Celery进行异步任务处理的详细步骤和代码演示。如果要使用字符串作为范例,请将上述代码中的“pidancode.com”或“皮蛋编程”替换为您需要的字符串即可。

相关文章