網(wǎng)站首頁 編程語言 正文
前言
Celery在python中的應(yīng)用除了實(shí)現(xiàn)異步任務(wù)(async task)外也可以執(zhí)行定時(shí)任務(wù)(beat)
一、Celery定時(shí)任務(wù)是什么?
Celery默認(rèn)任務(wù)單元由任務(wù)生產(chǎn)者觸發(fā),但有時(shí)可能需要其自動(dòng)觸發(fā),而Beat進(jìn)程正是負(fù)責(zé)此類任務(wù),能夠自動(dòng)觸發(fā)定時(shí)/周期性任務(wù).
Celery 進(jìn)行周期任務(wù)也很簡(jiǎn)單,只需要在配置中配置好周期任務(wù),然后在運(yùn)行一個(gè)周期任務(wù)觸發(fā)器(beat)即可,具體網(wǎng)上看
二、使用步驟
win10 + python3 + redis + celery 5
1.代碼結(jié)構(gòu)
celery_config.py配置:
代碼如下(示例):
#-*-coding=utf-8-*-
from datetime import timedelta
from celery.schedules import crontab
# 中間件
BROKER_URL = 'redis://scck2svr03:6379/6'
# 結(jié)果存儲(chǔ)
# CELERY_RESULT_BACKEND = 'redis://:scck2svr03:6379/5'
CELERYD_CONCURRENCY = 20 # 并發(fā)worker數(shù)
CELERYD_FORCE_EXECV = True # 非常重要,有些情況下可以防止死鎖
# CELERY_TASK_SERIALIZER = 'msgpack' # 任務(wù)序列化和反序列化使用msgpack方案
CELERY_RESULT_SERIALIZER = 'json' # 讀取任務(wù)結(jié)果一般性能要求不高,所以使用了可讀性更好的JSON
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # celery任務(wù)結(jié)果有效期
CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的內(nèi)容類型
CELERY_TIMEZONE = 'Asia/Shanghai' # celery使用的時(shí)區(qū)
CELERY_ENABLE_UTC = True # 啟動(dòng)時(shí)區(qū)設(shè)置
# 默認(rèn)worker隊(duì)列
#CELERY_DEFAULT_QUEUE = 'default'
# 異步任務(wù)
CELERY_IMPORTS = (
"celery_learning.email.tasks"
)
# celery beat
CELERYBEAT_SCHEDULE = {
'periodic_task-every-minute': {
'task': 'celery_learning.email.tasks.add',
'schedule': crontab(minute="*/1"),
'args': (1,2)
},
'periodic_task-every-10second':{
'task':'celery_learning.email.tasks.add',
'schedule':timedelta(seconds=10),
'args':(1,12)
}
}
2.啟動(dòng)定時(shí)任務(wù)
代碼如下(示例):
終端1:celery -A celery_learning.celery_app worker -l info -P gevent
終端2:celery -A celery_learning.celery_app beat
終端1
終端2
3.執(zhí)行結(jié)果
兩個(gè)定時(shí)任務(wù),一個(gè)每分鐘執(zhí)行,一個(gè)每10秒執(zhí)行
結(jié)果如下:
總結(jié)
原文鏈接:https://blog.csdn.net/panda_225400/article/details/121883120
相關(guān)推薦
- 2022-10-30 golang基于errgroup實(shí)現(xiàn)并發(fā)調(diào)用的方法_Golang
- 2022-06-22 Android開發(fā)保存QQ密碼功能_Android
- 2022-09-01 Docker鏡像的遷移與備份及Dockerflie?使用方法詳解_docker
- 2022-11-22 Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析_nginx
- 2022-02-11 ResizeObserver Polyfill監(jiān)聽元素寬高的變化,在React中的應(yīng)用
- 2022-09-19 Android基于OkHttp實(shí)現(xiàn)文件上傳功能_Android
- 2022-09-20 Redis?SCAN命令詳解_Redis
- 2022-10-23 C#中的yield關(guān)鍵字詳解_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支