Celery工具
什么是Celery
Celery的功能
Celery是基于python實現(xiàn)的第三方組件,可以實現(xiàn)定時任務、周期任務等。
Celery的組成
Celery的角色
- 任務,創(chuàng)建或發(fā)布任務。
- 使用redis/rabbitMQ進行任務記錄(broker)和任務返回結果(backend)的緩存。
- worker,主動執(zhí)行任務,主公返回結果。
簡單實例
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的項目目錄規(guī)范
在celery中,項目中需要一個文件夾,文件夾的名字沒有強制規(guī)范,但是其中必須要有一個配置worker的名叫celery的文件。
celey.py實例
celery.py的同級文件還有將要運行的腳本,與文件夾同級的還有一個調用文件,用來調用不同任務。
此時使用celery就通過Celery文件夾進行啟動。
celery worker -A Celery_task -l INFO -p eventlet -c 2
celery 默認啟動五個線程,-c參數(shù)就是設置線程數(shù)的
Celery的定時任務和周期任務
celery的定時任務
celery的定時任務是通過apply_async來實現(xiàn)的,apply_async接受兩個參數(shù),一個是任務需要的參數(shù),另一個是任務的定時時間,這里的時間指的是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的周期任務
周期任務就是周期性的生產(chǎn)出任務交給worker去執(zhí)行,增加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實現(xiàn)周期任務時,不能直接創(chuàng)建worker,需要先創(chuàng)建創(chuàng)建任務的beat工廠。
celery beat -A Celery_task
轉載于:https://www.cnblogs.com/cuiyuanzhang/p/10396317.html
總結
- 上一篇: NX_UG1872安装
- 下一篇: html细边框表格代码,html中表格细