Celery和Django结合(一)
Windows下安装Celery过程记录
背景
最近项目中遇到一个问题,需要定时执行任务,选择通过celery来实现。
计划步骤:
1.Celery基本使用,启用多个workers
2.Celery 定时任务
3.与django结合,通过django配置celery periodic task
本地环境
本地环境如下:
- windows 10
- pyhon3.6
- cerlery4.4.7
- redis3.2
执行步骤
redis安装:
Window 下安装
下载地址:https://github.com/tporadowski/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘,解压后,将文件夹重新命名为 redis。
打开文件夹,内容如下:
打开一个 cmd 窗口 使用 cd 命令切换目录到 D:\redis 运行:
redis-server.exe redis.windows.conf
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
窗口不要关闭,不然就无法访问服务端了。
下载celery
pip install celery
如果有多个python版本记得指定python36对应的pip进行下载
celery调试
创建tasks.py
from celery import Celery
app = Celery('tasks',
broker='redis://localhost',
backend='redis://localhost')
@app.task
def add(x, y):
print("running...", x, y)
return x + y
步骤1.进入task.py同级目录,cmd窗口执行命令
celery -A tasks worker --loglevel=info
步骤2.输入
python36
form tasks import add
result = add.delay(2,2)
result.get()
发现celery 窗口报错,如下:
解决方案如下:
1.pip install eventlet
2.将celery -A tasks worker --loglevel=info替换为新的命令 celery -A tasks worker -l info -P eventlet
重新执行步骤2
成功打印出结果
备注:
怎么启动多个worker,开启多个cmd窗口,执行命令
celery -A tasks worker --loglevel=info
崽崽看不懂就问我,后面我继续写
2.Celery 定时任务
3.与django结合