1,非阻塞执行
安装我在项目中使用的Django 1.8.2 安装了最新的celery4.4.0发现会报如下错误
raise ImproperlyConfigured('Celery 4.x requires Django 1.11 or later.')
celery.exceptions.ImproperlyConfigured: Celery 4.x requires Django 1.11 or later.
csdn道友已趟过这个坑,原文链接 https://blog.csdn.net/weixin_42702917/article/details/104250199
Django1.8.2安装celery4.1.1使用
pip install celery==4.1.1
2 ,启动worker 并非启动Django项目 而是启动celery服务
客户端(项目代码) ,broker(使用redis),worker是可以在同一台电脑上的
这里以在同一台电脑上为例启动worker
(1)先把项目文件拷贝一份放到桌面或者是别的虚拟环境下
(2)worker端需要在task.py文件下导入系统配置变量
# 在任务处理者一端去加这段代码 任务发出者不需要加
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')
django.setup()
(3)cd 进入桌面项目文件夹下
(4)workon 虚拟环境 这个虚拟环境需要安装了 celery
(5)执行下面代码开启worker
celery -A celery_tasks.tasks worker -l info
2,如果执行上面的代码, 报错 Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients.
解决:
打开文件编辑
redis配置文件目录.png- 注释掉绑定ip
# bind 127.0.0.1
- Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程,设置为no
daemonize no - 保护模式,关闭保护模式,否则外部ip无法连接
protected-mode no
ps -ef |grep redis
如果存在 杀死进程 重启
3,使用Django-Redis
使用最新的版本不可用 django-redis-4.11.0需要使用
网友评论