相关疑难解决方法(0)

如何从python中杀死进程和子进程?

例如来自bash:

kill -9 -PID 

os.kill(pid, signal.SIGKILL) 只杀死父进程.

python

23
推荐指数
3
解决办法
5万
查看次数

使用 PyTest 进行测试时如何在后台启动 Uvicorn + FastAPI

我有一个用Uvicorn + FastAPI编写的 REST-API 应用程序

我想使用 PyTest 进行测试。

我想在开始测试时在夹具中启动服务器,因此当测试完成时,夹具将终止应用程序。

FastAPI 测试展示了如何测试 API 应用程序,

from fastapi import FastAPI
from starlette.testclient import TestClient

app = FastAPI()


@app.get("/")
async def read_main():
    return {"msg": "Hello World"}


client = TestClient(app)


def test_read_main():
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"msg": "Hello World"}
Run Code Online (Sandbox Code Playgroud)

这不会以通常的方式使服务器联机。似乎由 client.get 命令触发的特定功能是唯一运行的东西。

我找到了这些额外的资源,但我无法让它们为我工作:

https://medium.com/@hmajid2301/pytest-with-background-thread-fixtures-f0dc34ee3c46

如何将服务器作为 py.test 的夹具运行

您将如何从 PyTest 运行 Uvicorn+FastAPI 应用程序,以便它随着测试而上升和下降?

python testing pytest fastapi uvicorn

13
推荐指数
3
解决办法
1万
查看次数

Python - 如何在不阻塞线程的情况下使用 FastAPI 和 uvicorn.run?

我正在寻找将 uvicorn.run() 与 FastAPI 应用程序一起使用但没有 uvicorn.run() 阻塞线程的可能性。我已经尝试使用进程、子进程和线程,但没有任何效果。我的问题是我想从另一个进程启动服务器,该进程在启动服务器后应该继续执行其他任务。另外,我在从另一个进程关闭服务器时遇到了问题。

有没有人知道如何使用 uvicorn.run() 非阻塞以及如何从另一个进程中阻止它?

问候 LeukoClassic

python multiprocessing fastapi uvicorn

7
推荐指数
2
解决办法
8254
查看次数

如何触发 FastAPI/Uvicorn 的干净关闭

我正在使用 uvicorn 和 python 的 subprocess.Popen 运行多个 FastAPI 实例。我有一个用 PySimpleGUI 制作的小型 GUI,我希望能够随意关闭服务器并重新启动它们。

我遇到的第一个问题是,至少在 Windows 中,启动 uvicorn 服务器似乎创建的不是一个,而是两个新进程,并且调用Popen.terminate()仅关闭其中一个进程,这不会释放与服务器关联的端口。我使用 psutil 包修复了此问题,以检查实例化 Popen 对象后创建了哪些新进程,并使用 psutil 跟踪和终止第二个进程。

还有一个主要问题是,调用psutil.terminate()进程并没有调用.net下的FastAPI函数@app.on_event("shutdown")。过去,我们在单独的终端窗口中运行所有服务器,并发现这些终端窗口上的 ctrl-c 将调用关闭事件,但我没有找到其他方法来执行此操作。我界面上的 ctrl-c 显然会关闭界面和所有服务器,并且在命中所有服务器的关闭事件方面有些不可靠。我的另一个想法是 use psutil.send_signal(signal.CTRL_C_EVENT),但这与在终端中调用 ctrl-c 具有相同的效果。

所以我很茫然。我看到很多帖子说这是 uvicorn 的普遍缺点,但没有看到任何直接证实我自己的经验或提供解决方案的内容。我还知道 FastAPI 中的“关闭”和“启动”事件是从 Starlette 移植的,并且在这两个包中都没有很好的记录。我看到过使用 guvicorn 的建议,但我的简短调查证实它与 Windows 不兼容。有什么建议么?

python windows subprocess fastapi uvicorn

5
推荐指数
1
解决办法
2627
查看次数