日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?Celery定時任務詳細講解_python

作者:panda_225400 ? 更新時間: 2022-09-26 編程語言

前言

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

欄目分類
最近更新