業務端後台:通過python manage執行
執行用例時,用python manage執行時會卡,影響效率
celery task 本身自己也是個服務,非同步處理case
非同步:小明去給我買個東西,我去寫**,小明買完回來給我
同步:小明去給我買個東西,我在這裡等著他回來
celery結構
--celery task
--run
--tasks #執行非同步任何的核心位址
--config.py #存celery配置
--main.py #執行目錄
安裝命令:
pip install celery
pip install celery==4.4.7 #指定版本安裝
pip install eventlet
# 接收任務的中介軟體broker_url = "redis:"
# 任務結果的中介軟體
result_backend = "redis:"
from celery import celeryimport os,django
if not os.getenv('django_settings_module'):
os.environ['django_settings_module'] = 'sky.settings'
# 獲取celery的配置資訊
# 提供tasks的路徑,自動發現需要執行的task任務
# mac 安裝
# sudo pip install celery
# 啟動celery的方法 預設以cpu的核數多程序的方式啟動
# celery -a 應用路徑 worker -l 日誌級別
# mac同學
# celery -a celery_tasks.main worker -l info 普通啟動
# celery multi start w1 -a celery_tasks.main -l info --logfile=logs/celerylog.log --pidfile=logs/celerypid.pid 後台執行
# celery flower -a celery_tasks.main 開啟乙個web頁面啟動 需要提前安裝下flow 安裝命令:pip install flower
# win同學
# pip install celery
# pip install eventlet
# celery -a celery_tasks.main worker -l info -p eventlet
# -- * - **** ---
# - ** ---------- [config]
# - ** ---------- .> transport: redis: 設定的broker的佇列是那個
# - ** ---------- .> results: redis: 設定backend的儲存位址
# - *** --- * --- .> concurrency: 4 (prefork) 預設啟動的程序數
# -- ******* ---- .> task events: off (enable -e to monitor tasks in this worker)
# --- ***** -----
# -------------- [queues]
# .> celery exchange=celery(direct) key=celery
# 在view檢視中只需要匯入tasks中寫好的任務方法 通過任務方法呼叫delay()即可
# from celery_tasks.run.tasks import run_case
# 呼叫task任務 引數可以在delay中傳遞,正常呼叫一樣
# run_case.delay()
# name 給方法命名
def demo():
logger.info('info')
logger.debug('debug')
執行啟動命令後
celery -a celery_tasks.main worker -l info -p eventlet
可以看到可執行的任務:
[tasks]. demo
#測試from celery_tasks.run.tasks import demo
#通過這個方法呼叫非同步函式
demo.delay()
#呼叫日誌[2021-01-23 22:13:28,277: info/mainprocess] celery@xiaolin-pc ready.
[2021-01-23 22:13:28,288: info/mainprocess] pidbox: connected to redis:
[2021-01-23 22:31:06,912: info/mainprocess] received task: demo[fe18b516-40bc-47e4-8243-5451242bd4d8]
[2021-01-23 22:31:06,914: info/mainprocess] demo[fe18b516-40bc-47e4-8243-5451242bd4d8]: info
[2021-01-23 22:31:06,918: info/mainprocess] task demo[fe18b516-40bc-47e4-8243-5451242bd4d8] succeeded in 0.0s: none
非同步 非同步任務
非同步任務 記錄一下學習完springboot後進行使用非同步方法時的筆記 service層 author yesijie date 2019 11 29 15 25 service public class asyncc catch interruptedexception e system.ou...
非同步任務 定時任務
一 在主程式開啟非同步註解功能 enableasync enableasync 開啟非同步註解功能 public class 二 標明非同步類 asyns service async 表注該類為非同步類 public class asynservice catch interruptedexcept...
AsyncTask非同步任務
asynctask非同步任務怎麼寫 寫乙個類繼承asynctask,重寫方法 doinbackgroud 再new 這個類,執行物件 execute 在ui執行緒裡面寫這個類的實現方法 doinbackground有可能是新開的執行緒,有可能是執行緒池裡面的執行緒 執行順序 onpreexecute...