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

超實用 Demo:使用 FastAPI、Celery、RabbitMQ 和 MongoDB 實現(xiàn)一個異步任務(wù)工作流

數(shù)據(jù)庫 其他數(shù)據(jù)庫
今天分享一份代碼,使用 Celery、RabbitMQ 和 MongoDB 實現(xiàn)一個異步任務(wù)工作流,你可以修改 task.py 來實現(xiàn)你自己的異步任務(wù)。

異步任務(wù),是 Web 開發(fā)中經(jīng)常遇到的問題,比如說用戶提交了一個請求,雖然這個請求對應(yīng)的任務(wù)非常耗時,但是不能讓用戶等在這里,通常需要立即返回結(jié)果,告訴用戶任務(wù)已提交。任務(wù)可以在后續(xù)慢慢完成,完成后再給用戶發(fā)一個完成的通知。

今天分享一份代碼,使用 Celery、RabbitMQ 和 MongoDB 實現(xiàn)一個異步任務(wù)工作流,你可以修改 task.py 來實現(xiàn)你自己的異步任務(wù)。

架構(gòu)圖如下:

圖片

其中 Celery 來執(zhí)行異步任務(wù),RabbitMQ 作為消息隊列,MongoDB 存儲任務(wù)執(zhí)行結(jié)果,F(xiàn)astAPI 提供 Web 接口。

以上所有模塊均可使用 Docker 一鍵部署。

下面為 Demo 使用方法:

1、確保本機已安裝 Docker、Git

2、下載源代碼:

git clone https://github.com/aarunjith/async-demo.git

3、部署并啟動:

cd async-demo
docker compose up --build

4、啟動一個異步任務(wù):

$ curl -X POST http://localhost:8080/process

任務(wù)會發(fā)送到消息隊列,同時會立即返回一個任務(wù) id:

? curl -X POST http://localhost:8080/process
{"status":"PENDING","id":"a129c666-7b5b-45f7-ba54-9d7b96a1fe58","error":""}%

5、查詢?nèi)蝿?wù)狀態(tài):

curl -X POST http://localhost:8080/check_progress/<task_id>

任務(wù)完成后的返回結(jié)果如下:

 ? curl -X POST http://localhost:8080/check_progress/a129c666-7b5b-45f7-ba54-9d7b96a1fe58
{"status":"SUCEESS","data":"\"hello\""}%

代碼目錄結(jié)構(gòu)如下:

圖片

其中 app.py 如下:

from fastapi import FastAPI
from celery.result import AsyncResult
from tasks import start_processing
from loguru import logger
from pymongo import MongoClient
import uvicorn

# Lets create a connection to our backend where celery stores the results
client = MongoClient("mongodb://mongodb:27017")

# Default database and collection names that Celery create
db = client['task_results']
coll = db["celery_taskmeta"]

app = FastAPI()


@app.post('/process')
async def process_text_file():
'''
Process endpoint to trigger the start of a process
'''
try:
result = start_processing.delay()
logger.info(f'Started processing the task with id {result.id}')
return {
"status": result.state,
'id': result.id,
'error': ''
}
except Exception as e:
logger.info(f'Task Execution failed: {e}')
return {
"status": "FAILURE",
'id': None,
'error': e
}


@app.post('/check_progress/{task_id}')
async def check_async_progress(task_id: str):
'''
Endpoint to check the task progress and fetch the results if the task is
complete.
'''
try:
result = AsyncResult(task_id)
if result.ready():
data = coll.find({'_id': task_id})[0]
return {'status': 'SUCEESS', 'data': data['result']}
else:
return {"status": result.state, "error": ''}
except Exception as e:
data = coll.find({'_id': task_id})[0]
if data:
return {'status': 'SUCEESS', 'data': data['result']}
return {'status': 'Task ID invalid', 'error': e}

if __name__ == "__main__":
uvicorn.run("app:app", host='0.0.0.0', port='8080')

如果要實現(xiàn)自己的任務(wù)隊列,就修改 task.py 來添加自己的異步任務(wù),可以整合到自己的項目中。

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

2025-06-03 08:15:00

微服務(wù)架構(gòu)異步任務(wù)隊列

2023-06-05 08:14:17

RabbitMQ兔子MQ開源

2021-12-08 07:06:54

命令 Fastapi Celery

2009-06-11 14:48:48

jbpm工作流引擎jbpm例子

2021-10-14 11:34:05

技術(shù)工作流引擎

2021-03-05 07:47:07

工作流引擎節(jié)點

2009-03-03 09:13:36

工作流BPM業(yè)務(wù)流程

2023-12-07 18:02:38

RabbitMQ異步通信

2023-03-31 13:01:31

PythonCelery驗證

2025-05-14 03:20:00

AgenticAIMCP

2013-09-29 17:13:59

PowerShell工作流

2022-10-26 08:00:43

Activiti工作流BPM

2009-09-22 12:15:06

ibmdwLotus

2010-11-26 10:59:28

SharePoint

2009-06-11 14:43:34

jbpm工作流引擎jBPM搭建

2025-04-15 08:20:00

FastAPI異步函數(shù)

2013-04-23 10:28:08

IBeamMDAAWF

2024-04-25 08:00:00

DevOps架構(gòu)軟件開發(fā)

2015-03-23 11:17:55

docker高效開發(fā)工作流

2022-07-07 08:38:15

Springflowable引擎
點贊
收藏

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

主站蜘蛛池模板: 国产免费一区二区三区 | japan21xxxxhd美女 日本欧美国产在线 | 久久久久久久av | 国产精品久久久久久久久久免费 | 99热在这里只有精品 | 国产一级成人 | 操一草| 中文字幕久久精品 | 亚洲精品国产精品国自产在线 | 99色视频| 亚洲成人一区二区三区 | 午夜专区| 成人免费在线观看 | 国产精品一区二区免费 | 亚洲一区精品在线 | 亚洲精品一区在线 | 久久国产综合 | 国产精品自产av一区二区三区 | av网站免费看 | 久久精品亚洲精品国产欧美 | 成人高清视频在线观看 | 久久69精品久久久久久国产越南 | 精品国产一区二区三区久久 | 欧美一级二级三级视频 | 国产乱码精品一区二区三区忘忧草 | 国产精品成人在线播放 | 日韩人体视频 | zzzwww在线看片免费 | 日韩成人中文字幕 | 国产精品一区在线观看你懂的 | 欧美精品一区在线 | 99久久婷婷国产综合精品电影 | 日韩在线播放网址 | 日韩国产免费观看 | 精品一区二区三区在线视频 | 国产一二三视频在线观看 | 韩日三级 | 国产在线观看不卡一区二区三区 | 精品久久久久久亚洲综合网站 | 国产欧美一区二区三区在线看 | 亚洲午夜三级 |