成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開發(fā)環(huán)境下,如何通過一個命令讓 Fastapi 和 Celery 一起工作

開發(fā) 后端
FastAPI 是 Python Web 領(lǐng)域非常受歡迎的框架,目前 GitHub 上有 39.1k 的 star,已經(jīng)遠超過了 Django rest framework(22.3k star)。而 Celey 又是異步任務最流行的框架,常用于數(shù)據(jù)挖掘和機器學習等計算密集型任務的場景中。

[[439191]]

FastAPI 是 Python Web 領(lǐng)域非常受歡迎的框架,目前 GitHub 上有 39.1k 的 star,已經(jīng)遠超過了 Django rest framework(22.3k star)。而 Celey 又是異步任務最流行的框架,常用于數(shù)據(jù)挖掘和機器學習等計算密集型任務的場景中。如果需要通過 API 來異步調(diào)用任務,那這兩個框架可以放在一起工作。本文來分享一下如何讓 FastAPI 和 Celery 更好的相互配合,開發(fā)環(huán)境下如何通過一個命令就可以讓兩者一起工作。

0、安裝依賴

  1. pip install fastapi celery uvicorn 

1、寫個純 celery 任務

首先,讓我們來寫一個純屬 celery 的任務,讓它正常運行,然后在通過 fastapi 來調(diào)用它。

假設你的機器已經(jīng)安裝了 Python3 和 celery,并且本機已經(jīng)開啟了 redis,運行在 6379 端口上。

現(xiàn)在讓我們寫一個簡單的任務:計算兩數(shù)之和,文件名為:celery_app.py 代碼如下:

  1. #!/Users/aaron/py38env/bin/python 
  2. # filename: celery_app.py 
  3. from celery import Celery 
  4.  
  5. app = Celery("tasks", broker='redis://127.0.0.1:6379/0', backend='redis://127.0.0.1:6379/0'
  6.  
  7. @app.task 
  8. def add(x, y): 
  9.     return x + y 

然后啟動一個 worker 接收遠程調(diào)用。

  1. celery -A celery_app worker -l info 

如果要遠程異步調(diào)用這個 add 函數(shù),我們需要再編寫一個文件 start_celery_app.py,內(nèi)容如下:

  1. from celery_app import add #導入我們的任務函數(shù)add 
  2. import time 
  3. result = add.delay(12,12) #異步調(diào)用,這一步不會阻塞,程序會立即往下運行 
  4.  
  5. while not result.ready():# 循環(huán)檢查任務是否執(zhí)行完畢 
  6.     print(time.strftime("%H:%M:%S")) 
  7.     time.sleep(1) 
  8.  
  9. print(result.get()) #獲取任務的返回結(jié)果 
  10. print(result.successful()) #判斷任務是否成功執(zhí)行 

任務返回了結(jié)果 24,命令成功完成,

此時 worker 界面增加的信息如下:

2、通過 fastapi 來執(zhí)行

編寫一個 api.py 通過接口來調(diào)用上述的 add 函數(shù):

  1. from fastapi import FastAPI 
  2. import celery_app 
  3.  
  4. app = FastAPI() 
  5.  
  6. @app.get("/"
  7. def read_root(): 
  8.     result = celery_app.add.delay(12, 12) 
  9.     return {"12+12": result.get()} 

啟動服務:

  1. uvicorn api:app --host 0.0.0.0 --port 8000 --reload 

然后訪問:http://127.0.0.1:8000,會發(fā)現(xiàn)任務成功執(zhí)行:

這樣我們啟動了兩個獨立的進程,一個是 celery 的 worker,一個是 fastapi 的 app,這樣做沒問題,且生產(chǎn)環(huán)境下是嚴格要求分開運行的,不過,開發(fā)環(huán)境下如果這樣做就太低效了。

3、開發(fā)環(huán)境下如何一條命令啟動

如果不使用兩個終端來啟動兩個命令,我們可以使用 Celery 提供的測試實用程序在后臺線程中啟動 celery worker,比如寫一個這樣的文件run.py,內(nèi)容如下:

  1. import uvicorn 
  2.  
  3. original_callback = uvicorn.main.callback 
  4.  
  5. def callback(**kwargs): 
  6.     from celery.contrib.testing.worker import start_worker 
  7.     from celery_app import app 
  8.  
  9.     with start_worker(app, perform_ping_check=False, loglevel="info"): 
  10.         original_callback(**kwargs) 
  11.  
  12. uvicorn.main.callback = callback 
  13.  
  14.  
  15. if __name__ == "__main__"
  16.     uvicorn.main() 

這樣,只需要執(zhí)行一條命令就可以同時啟動 celery worker 和 fastapi 接口服務,調(diào)試的時候是不是非常方便:圖片

最后的話

 

本文分享了 fastapi 和 celery 是如何配合工作的,并分享了一個用于開發(fā)環(huán)境的腳本,可以通過一個命令來啟動 celery worker 和 fastapi,可能不是完美的解決方案,但確實提升了開發(fā)效率,我覺得這是值得的,如果有幫助還請點贊、在看、關(guān)注,感謝閱讀。

本文轉(zhuǎn)載自微信公眾號「Python七號」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python七號公眾號。

 

責任編輯:武曉燕 來源: Python七號
相關(guān)推薦

2009-06-19 15:11:34

DWR和Spring

2022-06-06 09:00:00

Kubernete容器虛擬機

2011-01-20 11:42:49

同事

2020-10-12 08:02:04

開發(fā)人員開發(fā)編碼

2013-08-19 11:31:43

2010-04-14 16:45:29

Oracle 9i全索

2011-07-25 09:14:40

程序員

2013-07-29 14:15:07

職場痛并快樂團隊協(xié)作

2024-08-02 09:49:35

Spring流程Tomcat

2024-06-17 11:59:39

2015-10-20 16:48:06

AnsibleDocker可擴展設計

2023-04-11 07:48:32

WebGLCanvas

2022-10-08 07:55:33

DemoMongoDB異步

2024-08-29 09:18:55

2025-06-18 02:55:00

2022-12-02 14:20:09

Tetris鴻蒙

2009-11-06 08:57:31

WCF開發(fā)

2021-04-12 18:03:39

Nginx架構(gòu)負載

2023-06-05 18:23:01

AI人工智能

2021-10-27 06:49:34

線程池Core函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天干天天操天天射 | 久久久免费 | 国产福利在线小视频 | 日韩不卡三区 | 午夜看看 | 欧美国产精品 | 午夜天堂精品久久久久 | 成人免费在线播放 | 亚洲va在线va天堂va狼色在线 | 欧美精品一区二区在线观看 | 日本成人在线网址 | 日日干日日操 | 成人激情视频免费观看 | 国产精品久久一区 | 超级乱淫av片免费播放 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美精品日韩精品 | 伊人国产精品 | 日本人做爰大片免费观看一老师 | 日韩一区二区在线观看视频 | 国产一区二区精品在线观看 | 日韩激情在线 | 日本亚洲一区 | 高清国产一区二区 | 午夜精品一区二区三区三上悠亚 | 天天综合网天天综合色 | 国产成人精品一区二区三区在线 | 91色视频在线观看 | 欧美日韩国产在线 | 成人免费视频网站在线看 | 亚洲天堂中文字幕 | 国产精品激情在线 | 九七午夜剧场福利写真 | 国产一区二区影院 | 国产精品资源在线观看 | 久久精品久久久久久 | 欧美精品在线免费 | 狠狠综合久久av一区二区老牛 | 成人午夜精品 | 国产精品久久一区二区三区 | 香蕉久久久 |