| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 三步解决Celery环境搭建问题-定时任务篇 -> 正文阅读 |
|
[Python知识库]三步解决Celery环境搭建问题-定时任务篇 |
系列文章目录第一章 三步解决Celery环境搭建问题-异步任务篇 三步解决Celery环境搭建问题-定时任务篇
前言大家好,我是一个刚踩过坑,拍拍灰尘,又回到坑里的菜鸟开发——clisten。 此篇主要记录在前一章节实现异步任务基础上,如何实现定时任务调度以及管理,主要基于以下开发环境:
提示:以下是本篇文章正文内容,下面案例可供参考 一、安装库
注意:django-celery-beat、django-celery-results和celery之间有版本兼容性问题,pip完成后只要没有兼容性错误提示,就可以正常使用。 二、添加配置文件文件结构如下:
1.proj/proj/setting.py文件文件中添加内容如下:
注意:django-celery-beat默认的调度类是celery.beat:PersistentScheduler,默认的调度文件是beat_scheduler,而使用django的ORM时,通过修改默认的调度类(也可以通过命令指定调度类),能动态配置定时任务。 2.数据库迁移在添加完以上两处内容后,需要执行以下命令,完成数据库迁移
成功迁移的数据库表示例图,如下: - django_celery_beat_periodctask —存储可执行任务 三、测试定时任务调度app结构如下:
提示:结构用来对比,添加的内容示例见下文 1.proj/app/tasks.py文件app中添加tasks.py文件,内容如下:
2.注册用户、启动web服务、登录admin后台管理系统如果你有admin后台(localhost:80/admin)的管理用户,请直接登录
web服务成功启动后,登录后台,即可看到 3.启动redis、celery-worker和celery-beat
成功启动redis,示例如图
成功启动worker(若提示没celery命令,跳转坑1查看解决方法),示例如图
成功启动clelery-beat,示例如图 3.注册并执行定时任务如何在admin的后台中配置任务:点我直接翻到最后 注册任务示例如下: 按上述配置完成后,我们可以在celery-beat的终端里面看到,DatebaseScheduler:Schedule changed的打印,提示你动态的添加了定时任务,接下来celery-beat会调度,把任务放进队列中,交给worker去执行,在指定的定时周期,你可以在worker的终端窗口里面看到,接受到任务安排以及执行任务的打印信息,如下: 至此,顺利实现定时任务的配置和调度。 总结提示:个人总结,仅供参考 在程序启动时,没有次序要求,但是如果你先启动celery-worker,后启动redis,则worker的终端会一直提示你连接不上redis。如果你还没启动celery-beat,但启动worker时就有任务执行,说明队列中还有未完成的任务,是不是有点儿意思,坑也多,我总结了部分,希望对你有所帮助,respect! 归纳坑坑1.bash: celery: 未找到命令在pip list下安装了celey包,但是centos7下无法直接使用celery命令且报错,环境变量的问题,推荐解决方式: 提示:以上解法,亲测可以执行celery命令,但是重新打开终端又失效 坑2.python3.7与celery不兼容问题坑3.USE_TZ为False时不停的执行任务调度或者启动报错错误示例 TypeError:can’t compare offset-naive and offset-aware datetimes 坑4.ModuleNotFoundError: No module named ‘celery.five‘坑5.celery TypeError: ‘NoneType’ object is not iterable坑6.修改了tasks.py文件,执行结果未改变由于worker不能自动重载,所以ctrl+c终止后,重新运行worker程序即可 坑7.admin页面的Peridsk.task页面打开报错可能是配置问题:
坑8.配置定时任务,也可以在celery.py里面写死celery中默认的调度文件是beat_schedule,这里你改写了这个配置
坑9.worker内存泄漏在proj/proj/settings.py文件中添加内容示例
坑10.多setting.py文件celery.py的重写方法参考文档
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 0:40:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |