網站首頁 編程語言 正文
前言
Celery在python中的應用除了實現異步任務(async task)外也可以執行定時任務(beat)
一、Celery定時任務是什么?
Celery默認任務單元由任務生產者觸發,但有時可能需要其自動觸發,而Beat進程正是負責此類任務,能夠自動觸發定時/周期性任務.
Celery 進行周期任務也很簡單,只需要在配置中配置好周期任務,然后在運行一個周期任務觸發器(beat)即可,具體網上看
二、使用步驟
win10 + python3 + redis + celery 5
1.代碼結構
celery_config.py配置:
代碼如下(示例):
#-*-coding=utf-8-*-
from datetime import timedelta
from celery.schedules import crontab
# 中間件
BROKER_URL = 'redis://scck2svr03:6379/6'
# 結果存儲
# CELERY_RESULT_BACKEND = 'redis://:scck2svr03:6379/5'
CELERYD_CONCURRENCY = 20 # 并發worker數
CELERYD_FORCE_EXECV = True # 非常重要,有些情況下可以防止死鎖
# CELERY_TASK_SERIALIZER = 'msgpack' # 任務序列化和反序列化使用msgpack方案
CELERY_RESULT_SERIALIZER = 'json' # 讀取任務結果一般性能要求不高,所以使用了可讀性更好的JSON
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # celery任務結果有效期
CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的內容類型
CELERY_TIMEZONE = 'Asia/Shanghai' # celery使用的時區
CELERY_ENABLE_UTC = True # 啟動時區設置
# 默認worker隊列
#CELERY_DEFAULT_QUEUE = 'default'
# 異步任務
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.啟動定時任務
代碼如下(示例):
終端1:celery -A celery_learning.celery_app worker -l info -P gevent
終端2:celery -A celery_learning.celery_app beat
終端1
終端2
3.執行結果
兩個定時任務,一個每分鐘執行,一個每10秒執行
結果如下:
總結
原文鏈接:https://blog.csdn.net/panda_225400/article/details/121883120
相關推薦
- 2022-08-05 Python?list列表查找元素詳情_python
- 2023-01-17 用Python實現的等差數列方式_python
- 2022-04-07 python函數的重新定義及練習_python
- 2022-04-09 WPF中的數據模板用法介紹_基礎應用
- 2022-05-17 bat批處理之字符串操作的實現_DOS/BAT
- 2023-10-09 時間戳轉日期格式-自動補零,日期格式轉時間戳
- 2022-03-15 org.springframework.web.client.RestTemplate 上傳文件無法
- 2023-02-14 React?Hydrate原理源碼解析_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支