日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Celery工具

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Celery工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Celery

Celery的功能

Celery是基于python實現的第三方組件,可以實現定時任務、周期任務等。

Celery的組成

Celery的角色
- 任務,創建或發布任務。
- 使用redis/rabbitMQ進行任務記錄(broker)和任務返回結果(backend)的緩存。
- worker,主動執行任務,主公返回結果。

簡單實例

from celery import Celery import timemy_task = Celery("task",broker = "redis://127.0.0.1:6379",backend = "redis://127.0.0.1:6379", ) @my_task def func1(x,y):time.sleep(15)return x+y from work import func1 from celery.result import AsyncResult from work import my_taskres = func1.delay(2,4)async_task = AsyncResult( app = "my_task", id = res.id, ) if async_task.successiful():result = async_task.get()print(result) else:print("等待任務完成")

注意:如果是在windows平臺使用celery需要下載eventlet
work的啟動啟動不是直接python work.py,而是先celery worker -A work -l INFO -P eventlet

Celery的項目目錄規范

在celery中,項目中需要一個文件夾,文件夾的名字沒有強制規范,但是其中必須要有一個配置worker的名叫celery的文件。
celey.py實例

from celery import Celery celery_task = Celery( "task", broker = "redis://127.0.0.1:6379", backend = "redis://127.0.0.1:6379", include = ["Celery_task.task_one","Celery_task.task_two"] ) #Celery_task是我定義的文件夾名

celery.py的同級文件還有將要運行的腳本,與文件夾同級的還有一個調用文件,用來調用不同任務。
此時使用celery就通過Celery文件夾進行啟動。
celery worker -A Celery_task -l INFO -p eventlet -c 2
celery 默認啟動五個線程,-c參數就是設置線程數的

Celery的定時任務和周期任務

celery的定時任務

celery的定時任務是通過apply_async來實現的,apply_async接受兩個參數,一個是任務需要的參數,另一個是任務的定時時間,這里的時間指的是utc時間。

utc_time = datatime.datatime.utcfromtimestamp(time.time()) add_time = datatime.timedelta(second=2) #定時的時間 utc_time+=add_time res = task_one.apply_async(args=(1,2),eta = utc_time)

celery的周期任務

周期任務就是周期性的生產出任務交給worker去執行,增加celery.py文件的內容如下。

from celery.schedules import crontab celery_task.conf.beat_schedule = {"ten_task":{"task":"Celery_task.task_one.one", #這是目錄"schedule":crontab(hour=24),"args":(2,4),} }

當我們使用celery實現周期任務時,不能直接創建worker,需要先創建創建任務的beat工廠。
celery beat -A Celery_task

轉載于:https://www.cnblogs.com/cuiyuanzhang/p/10396317.html

總結

以上是生活随笔為你收集整理的Celery工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。