Python restapi请求中的多处理
出于某种原因,我希望在将请求发送到端点时启动一些函数(流程),并在将请求发送到另一个端点时结束此流程。我举了一个例子:Python restapi请求中的多处理,python,rest,multiprocessing,fastapi,Python,Rest,Multiprocessing,Fastapi,出于某种原因,我希望在将请求发送到端点时启动一些函数(流程),并在将请求发送到另一个端点时结束此流程。我举了一个例子: from fastapi import FastAPI from multiprocessing import Process import os import time app = FastAPI() def funct(): while True: time.sleep(0.4) print('-work-') p = P
from fastapi import FastAPI
from multiprocessing import Process
import os
import time
app = FastAPI()
def funct():
while True:
time.sleep(0.4)
print('-work-')
p = Process(target = funct)
@app.get("/start")
def st():
p.start()
return {'OK':'OK'}
@app.get("/end")
def en():
p.terminate()
p.join()
return {'OK':'OK'}
我使用以下工具运行它(api.py):
当我发出请求时
curl http://127.0.0.1:8000/start
它开始工作并打印“-work-”
但是当我发送
curl http://127.0.0.1:8000/end
它没有结束,仍然打印“-work-”
如何使我正确或我应该使用其他工具
@@@编辑:
我通过以下方式使其发挥作用:
@app.get("/start")
def st():
global p
p = Process(target = funct)
p.start()
return {'OK':'OK'}
@app.get("/end")
def en():
p.terminate()
p.join()
return {'OK':'OK'}
劳赫:
uvicorn api:app --reload
但我不知道这是否是完全正确的方法
uvicorn api:app --reload