一、celery的安装
1.1什么是celery
celery分布式消息队列框架,主要描述了安装salary 库,并关联radis内存型数据库, calary相当于异步操作,因为在一般的django项目中无法单独运行纯python文件,因此使用calary可以异步运行例如连接物联网平台或部署深度学习模型,
1.2在Windows上安装redis键值对存储数据库
下载 Redis:
- 访问 Redis 官方网站或者 GitHub Releases 页面:Redis 官方网站 或 Redis GitHub Releases。
- 下载最新的稳定版本的 Redis 安装包,选择适合 Windows 的版本。
安装 Redis:
双击下载的.msi
安装包,按照安装向导进行安装。启动 Redis 服务:
- 完成安装后,Redis 服务可能不会自动启动。可以在开始菜单中找到 Redis 安装目录(通常是
C:\Program Files\Redis
),打开命令行或者 PowerShell 窗口。- 使用命令
redis-server
启动 Redis 服务。Redis 将开始运行并监听默认端口6379
。验证安装:
- 打开另一个命令行或者 PowerShell 窗口,使用命令
redis-cli ping
来测试连接 Redis 服务器。如果返回PONG
,表示 Redis 已成功安装并运行。
二、在Django服务器中部署celery
步骤一:安装 Celery 和 Redis
安装 Celery:
- 在你的 Django 项目的虚拟环境中,使用 pip 安装 Celery:
pip install celery
- 在你的 Django 项目的虚拟环境中,使用 pip 安装 Celery:
安装 Redis:
- 如果还没有安装 Redis,请按照上述步骤在你的开发环境中安装 Redis。Celery 需要一个消息代理来处理任务队列,Redis 是一个常用的选择。
步骤二:配置 Celery
在 Django 项目中创建 Celery 配置文件:
在你的 Django 项目根目录下,创建一个名为
celery.py
的文件,用来配置 Celery 和 Django 项目的集成。# celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery # 设置默认 Django settings 模块 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') # 创建 Celery 应用实例 app = Celery('your_project') # 使用 Django settings 文件配置 Celery app.config_from_object('django.conf:settings', namespace='CELERY') # 从所有已注册的 Django app 中加载任务模块 app.autodiscover_tasks()
在 Django settings 文件中添加 Celery 配置:
打开你的 Django 项目的
settings.py
文件,添加以下配置:# settings.py # Celery 配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' # Redis 服务器地址和数据库编号 CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' # (可选) 如果使用时区敏感任务,请启用以下设置 CELERY_TIMEZONE = 'Asia/Shanghai' # 设置时区
定义和注册 Celery 任务:
在你的 Django app 中创建一个
tasks.py
文件,定义 Celery 任务:# your_app/tasks.py from celery import shared_task @shared_task def add(x, y): return x + y
启动 Celery Worker:
打开一个新的命令行或者 PowerShell 窗口,进入你的 Django 项目根目录,激活虚拟环境,并运行以下命令启动 Celery worker:
celery -A your_project worker -l info
这将启动一个 Celery worker 进程,它会监听并处理从 Redis 中接收到的任务。
在 Django 项目中使用 Celery:
在你的 Django 项目中,你可以通过导入并调用 Celery 任务来使用它们。例如,在视图中异步执行任务:
from your_app.tasks import add def your_view(request): result = add.delay(4, 5) # 异步执行任务 return HttpResponse(f"Task ID: {result.id}")
delay()
方法会将任务推送到 Celery worker 进行处理。
监控 Celery 任务:
- 可以使用 Celery Flower 或者 Django 自带的 admin 界面来监控和管理 Celery 任务的执行情况。