python celery beat實現定時任務

在Celery在python中的應用除了實現異步任務(async task)外也可以執行定時任務(beat)

1.Celery定時任務是什么?

Celery默認任務單元由任務生產者觸發,但有時可能需要其自動觸發, 而beat進程正是負責此類任務,能夠自動觸發定時/周期性任務.

在這里插入圖片描述

只需要在配置中配置好周期任務,然后在運行一個周期任務觸發器(beat)即可

2.直接上代碼

目錄結構如下:

在這里插入圖片描述

celery_app.py 文件代碼如下:

import os
import sys
import time
import celery
from pathlib import Path
from datetime import timedelta# 實例化celery對象
app = celery.Celery("celery_worker",backend="redis://:@127.0.0.1:6379/4",broker="redis://:@127.0.0.1:6379/5",include=["celery_worker.email.tasks"],
)# celery beat 定時任務
beat_schedule = {'periodic_task-every-minute': {# 'task': 'celery_worker.email.tasks.add','task': 'chain.send_chains','schedule': timedelta(seconds=10),'args': (11, 22)},
}# 配置文件
app.conf.update(task_serializer="json",result_serializer="json",accept_content=["json"],task_default_queue="normal",timezone="Asia/Shanghai",enable_utc=False,task_ignore_result=True,redis_max_connections=100,result_expires=3600,beat_schedule=beat_schedule
)"""
celery -A celery_worker.celery_app worker -l info
celery -A celery_worker.celery_app beat
"""

email.tasks.py 代碼如下:

from loguru import logger
# 模塊化之后
from celery_worker.celery_app import app@app.task(name='chain.send_chains')
def add(x, y):logger.info(f'number_add 進來了...x:{x}, y:{y}')return x + y

然后順序啟動 worker 和 beat 定時任務(記得兩個都必須啟動)

執行如下命令:

celery -A celery_worker.celery_app worker -l info   (啟動干活的人)
celery -A celery_worker.celery_app beat  (啟動定時任務 類似crontab)

效果如下:

在這里插入圖片描述

在這里插入圖片描述

其實簡單的來說就是這點代碼:

beat_schedule = {'periodic_task-every-minute': {# 'task': 'celery_worker.email.tasks.add','task': 'chain.send_chains','schedule': timedelta(seconds=10),'args': (11, 22)},
}

periodic_task-every-minute 這個就是定時任務的名字 ,隨便起無所謂。

重點是這個 "task",經過實際測試,如果這個工作函數沒有指定name 名字的話,默認就是 函數路徑+函數名稱 也就是 'celery_worker.email.tasks.add'

但是如果這函數添加name屬性值的話 直接用名字也是可以的,也就是'chain.send_chains'

好了 小伙伴們也自己實操下吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717998.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

吳恩達deeplearning.ai:學習曲線決定下一步怎么做

以下內容有任何不理解可以翻看我之前的博客哦:吳恩達deeplearning.ai專欄 學習曲線是一種圖形表示方法,用于展示模型在訓練過程中的學習表現,即模型的訓練集和驗證集上的性能如何隨著訓練時間的增加而變化。可以幫助我們了解模型的學習進度。…

Orbit 使用指南 01| 創建空白場景 | Isaac Sim | Omniverse

如是我聞: 在使用指南01中 演示如何使用獨立的Python腳本啟動和控制Isaac Sim模擬器。介紹Orbit框架中兩個最常用的類app.AppLauncher和sim.SimulationContext。實踐在Oribit中設置一個空場景 代碼 本指南對應于orbit/source/standalone/tutorials/00_sim目錄中的…

制作耳機殼的UV樹脂和塑料材質哪一個成本更高一些?

總體來說,制作耳機殼的UV樹脂的成本可能會略高于塑料材質。 原材料成本:UV樹脂通常是通過復雜的合成過程制成的。這些過程不僅需要大量的能源投入,還需要較高水平的技術和設備支持,因此原材料成本較高。相比之下,塑料…

04-prometheus服務的動態發現

一、概述 目前,我們每增加一個被監控的節點,就需要修改prometheus的配置文件,然后重新加載prometheus服務,這種方式比較繁瑣,每次新增、刪除被監控節點都需要重新操作一遍,不適合生產環境的大規模監控架構&…

Go-zero中分布式事務的實現(DTM分布式事務管理器,在一個APi中如何調用兩個不同服務的rpc層,并保證兩個不同服務之間的業務邏輯同時成功)

涉及到的相關技術 1.DTM分布式事務管理器,解決跨數據庫、跨服務、跨語言棧更新數據的一致性問題。 2.SAGA事務模式,SAGA事務模式是DTM中常用的一種模式,簡單易上手.(當然還有其它更多的事務模式,這里采用的SAGA只不過是其中一種較為簡單的方法) 3.Go-zero框架,ETCD服務注冊... …

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)https://www.cnblogs.com/xuegqcto/articles/7521483.html 在windows server 2012上安裝nginx,同時配置開機自啟動服務(推薦使用“Windows Service Wrapper”工具&…

leetcode 740.刪除并活得點數

這道題和打家劫舍得思路很像。 思路:首先我們看到題目的意思,就是說我們如果選擇了一個數,那么它相鄰的數就會不得選入,也就是刪除。這就是上一個題那個相鄰的家不能偷的問題唄! 我們從那個地方轉換一下,…

【Linux】線程概念|線程理解|線程控制

文章目錄 線程概念Linux中線程是否存在的討論線程創建和線程控制線程的終止和等待(三種終止方式 pthread_join()的void**retval) 線程概念 線程就是進程內部的一個執行流,線程在進程內運行,線程在進程的地址空間內運行&#xff0…

LeetCode-第14題-最長公共前綴

1.題目描述 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""。 2.樣例描述 3.思路描述 按字符串數組每個數組的長度,將字符串數組從小到大排序;他們的公共前綴一定小于或等于最長元素長度…

(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法

文章目錄 阿里云人工智能工程師ACP認證考試知識點輔助閱讀(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法視覺智能建模流程圖像預處理技術圖像特征提取算法深度學習模型 阿里云人工智能工程師ACP認證考試知識點輔助閱讀 &#…

2024年智能駕駛年度策略:自動駕駛開始由創造型行業轉向工程型行業

感知模塊技術路徑已趨于收斂,自動駕駛從創造型行業邁向工程型行業。在特斯拉的引領下,國內主機廠2022年以來紛紛跟隨特斯拉相繼提出“重感知、輕地圖”技術方案,全球自動駕駛行業感知模塊技術路徑從百花齊放開始走向收斂。我們認為主機廠智能…

2023.3.3周報

目錄 摘要 一、文獻閱讀 1、題目 2、摘要 3、模型架構 4、文獻解讀 一、Introduction 二、實驗 三、結論 二、PINN 一、PINN比傳統數值方法有哪些優勢 二、PINN方法 三、正問題與反問題 三、PINN實驗 一、數學方程 二、模型搭建 總結 摘要 本周我閱讀了一篇…

Postman上傳文件的操作方法

前言 調用某個接口,測試上傳文件功能。一時間不知如何上傳文件,本文做個操作記錄,期望與你有益。 步驟一、設置Headers key:Content-Type value:multipart/form-data 步驟二、設置Body 選擇form-data key:file下拉框選擇file類型value&…

STM32(8)NVIC編程

中斷源由部分片上外設產生 在misc.h中找,雜項 配置NVIC GPIO和AFIO不能產生中斷源,但能通過EXTI,由EXTI產生中斷源 NVIC不需要開啟時鐘,因為NVIC模塊位于內核內部,芯片一上電就能工作。 中斷響應函數 中斷向量表在啟…

Java:JVM基礎

文章目錄 參考JVM內存區域程序計數器虛擬機棧本地方法棧堆方法區符號引用與直接引用運行時常量池字符串常量池直接內存 參考 JavaGuide JVM內存區域 程序計數器 程序計數器是一塊較小的內存空間,可以看做是當前線程所執行的字節碼的行號指示器,各線程…

Unity 常用的4種燈光、制作鏡子、燈光的調用修改數值、

創建燈光時,一般用4種:定向光、點光源、聚光、區域光、 定向光:太陽 點光源:燈泡 聚光燈:手電筒 區域光:烘焙-貼圖 燈光選擇已烘焙 需要先選擇被烘焙的物體,然后再選擇Contribute GI 等待進…

java中的set

Set Set集合概述和特點 不可以存儲重復元素 沒有索引,不能使用普通for循環遍歷 哈希值 哈希值簡介 是JDK根據對象的地址或者字符串或者數字算出來的int類型的數值 如何獲取哈希值 Object類中的public int hashCode():返回對象的哈希碼值。 哈希值的特點 同一個…

分布式ID生成算法|雪花算法 Snowflake | Go實現

寫在前面 在分布式領域中,不可避免的需要生成一個全局唯一ID。而在近幾年的發展中有許多分布式ID生成算法,比較經典的就是 Twitter 的雪花算法(Snowflake Algorithm)。當然國內也有美團的基于snowflake改進的Leaf算法。那么今天我們就來介紹一下雪花算法…

計算機視覺基礎知識(二)---數字圖像

像素 像素是分辨率的單位;構成位圖圖像的最基本單元;每個像素都有自己的顏色; 圖像分辨率 單位英寸內的像素點數;單位為PPI(Pixels Per Inch),為像素每英寸;PPI表示每英寸對角線上所擁有的像素數目:,x:長度像素數目,y:寬度像素數目,Z:屏幕大小;屏幕尺寸(大小)指的是對角線長…

GO語言學習筆記(與Java的比較學習)(八)

接口與反射 接口是什么 Go 語言不是一種 “傳統” 的面向對象編程語言:它里面沒有類和繼承的概念。 但是 Go 語言里有非常靈活的 接口 概念,通過它可以實現很多面向對象的特性。接口提供了一種方式來 說明 對象的行為:如果誰能搞定這件事&…