Celery是一个开源的分布式任务队列,它专注于实时操作,但也支持调度。它使用AMQP(Advanced Message Queuing Protocol)协议,但也可以与其他消息中间件一起工作,如Redis。在本例中,我们将使用Redis作为 Celery 的消息代理。
1. 安装Celery和Redis:
在Windows上,你可以通过pip来安装Celery和redis库:
pip install celery
pip install redis
说明:pip命令需通过python自带的pip安装器安装,前提系统中安装了python
在命令行中输入“python -m ensurepip --upgrade”命令即可安装最新版本的pip
2. 配置Redis:
Redis是一个内存数据库,用于存储Celery的任务和结果。下载并安装Redis的Windows发行版(https://github.com/MSOpenTech/redis/releases),启动服务。
Redis安装详细教程参考www.piis.cn/zhishi/295.html
3. 创建Celery实例:
在Python项目中,创建一个名为`celery.py`的文件,定义Celery实例,并配置使用Redis作为broker和result backend:
python
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')
4. 定义任务:
创建一个Python模块,例如`tasks.py`,在这个模块中定义你的任务函数:
python
from .celery import app
@app.task
def add(x, y):
return x + y
5. 启动Celery worker:
在命令行中,导航到你的项目目录,然后启动Celery worker,确保它连接到Redis服务器:
celery -A celery worker --loglevel=info
6. 设置定时任务:
使用`apply_async`的`countdown`参数可以设置延迟执行的任务,或者使用`beat`模块创建周期性任务。例如:
python
from tasks import add
# 延迟执行的任务
add.apply_async((2, 2), countdown=10)
# 定时任务(需开启Celery beat)
add.s(2, 2).apply_async(countdown=10, expires=10)
7. 启动Celery beat:
Celery beat是任务调度器,确保周期性任务按计划执行。在另一个命令行窗口启动:
celery -A celery beat --loglevel=info
8. 监控任务:
可以使用`flower`工具实时监控Celery的任务状态。首先安装flower:
pip install flower
然后在项目目录启动flower:
celery -A celery flower
打开浏览器,访问http://localhost:5555,即可看到Celery的监控界面。
9. sendmail子文件:
这可能是包含发送邮件功能的代码或脚本,可能与Celery结合使用,例如在任务完成后发送通知邮件。具体实现取决于文件内容。
通过以上步骤,你可以在Windows环境中使用Redis和Celery搭建起一个基本的定时任务系统。随着项目的扩展,你可以进一步配置Celery的工作模式、错误处理、日志记录等,以满足更复杂的需求。