使用Django Celery进行数据清理

2023-04-11 00:00:00 django 数据 清理

首先,需要在Django项目中安装Celery库和Redis或者RabbitMQ作为消息中间件。

安装Celery库,可以使用以下命令:

pip install celery

安装Redis,可以使用以下命令:

pip install redis

或者安装RabbitMQ,可以使用以下命令:

pip install kombu
pip install amqp

接着,在Django项目的settings.py文件中进行如下配置:

CELERY_BROKER_URL = 'redis://localhost:6379/0'  # Redis作为消息中间件
# 或者
CELERY_BROKER_URL = 'amqp://localhost//'  # RabbitMQ作为消息中间件

CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

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

在项目中创建tasks.py文件,并编写需要异步执行的任务。例如,数据清理任务:

from celery import shared_task

@shared_task
def clean_data(name):
    print("Cleaning data for", name)
    # 清理数据的逻辑代码

在views.py中调用该任务:

from myapp.tasks import clean_data

def my_view(request):
    # 调用数据清理任务
    clean_data.delay("pidancode.com")  # 异步执行
    return HttpResponse("任务已启动")

在终端中启动Celery worker:

celery -A myproject worker -l info

这样,任务就能异步执行,而不会阻塞主线程。

相关文章