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