坑1:
首先,你感觉设置分钟的参数 timedelta ,不太准,这不是不准,这是版本不对。。。
celery 4.0开始已经不支持 windows平台了 天坑,注意一些模块的 适用平台和版本 !!!
E:爬虫kgw>celery --version
4.4.6 (cliffs)
E:爬虫kgw>pip3 uninstall celery
坑2:
报错”from kombu.async.timer import Entry, Timer as Schedule, to_timestamp, logger”,
这是因为在 python 3.7
中将 async
作为了关键字,所以当 py 文件中出现
类似 from . import async, base
这类不符合python语法的语句时,Python会报错;
解决方法: 在 `celery` 官方的提议下,建议将 kombu下的`async.py` 文件的
文件名改成 `asynchronous;然后把引用和这个文件的所有文件的里面的async改为asynchronous;`
我把修改好的文件放在附件中了,解压后,替换到site-packages路径下;
简单的法子就是哪个导入文件报错async,就把文件里的async替换成asynchronous;
其实,如果你在 Windows 平台,Celery 和 Python 解释器 都降低版本就好了
版本如下:
windows10
python:3.5
celery: 3.1.25
坑3:
使用 3.5 的解释器,但是启动 celery 还是用的 3.8 包中的模块导致报错。
解决:这是因为你多个python解释器,3.8变量在 3.5 的前面,导致找的是3.8的模块
坑4:
启动celery报错:AttributeError: str object has no attribute items
问题是:开启worker和beat进程后发现周期性任务没有被执行?
celery4中才引入了beat_schedule这些小写变量,以前都是大写变量。
即:Version 4.0 introduced new lower case settings and setting organization.
具体见[说明]
http://docs.celeryproject.org/en/latest/userguide/configuration.html#example-configuration-file
因此,把变量名改回了大写CELERYBEAT_SCHEDULE。
https://docs.celeryproject.org/en/latest/userguide/configuration.html#example-configuration-file