如何让 uvicorn 服务在后台持续运行 和停止使用?
要让 uvicorn 服务在后台持续运行,可以去掉 --reload 选项(因为它主要用于开发环境)并使用 Linux 的 nohup 或者 systemd 进行后台运行。
如果你仅想通过 nohup 来实现后台运行,可以改写命令如下:
nohup uvicorn sriptname:app --host 0.0.0.0 --port 8000 > uvicorn.log 2>&1 &
nohup:确保命令在关闭终端后继续运行。> uvicorn.log 2>&1:将输出和错误日志都写入到uvicorn.log文件中。&:将进程放到后台运行。
这种方法适合轻量级的任务,如果你希望更健壮的方式(例如服务崩溃后自动重启),可以使用 systemd。
要停止使用 nohup 启动的后台服务,首先你需要找到该服务的进程 ID (PID),然后使用 kill 命令终止它。步骤如下:
-
通过
ps命令查找运行的uvicorn进程:
ps aux | grep uvicorn
-
这会列出所有运行的
uvicorn进程。找到与你的服务相关的进程,并记下其 PID(进程 ID)。 -
2.使用
kill命令终止进程:
kill <PID>
将 <PID> 替换为实际的进程 ID。
如果你想强制终止进程,可以使用 kill -9 <PID> 命令:
kill -9 <PID>
这将强制终止进程,即使它没有响应普通的 kill 命令。
那例如我返回如下结果,应该如何杀死进程呢?
(airtest) gptdemo@train-0001:~/kungfu/aireader/docreader/fullsummary$ ps aux | grep uvicorn gptdemo 3026950 0.3 0.0 209576 124728 ? Sl 09:40 0:03 /home/gptdemo/anaconda3/envs/aitest/bin/python3.11 /home/gptdemo/anaconda3/envs/aitest/bin/uvicorn alldoc_summary_v16:app --host 0.0.0.0 --port 8000 gptdemo 3032258 0.0 0.0 6576 1152 pts/30 S+ 09:58 0:00 grep --color=auto uvicorn
根据你的 ps aux 输出,uvicorn 进程的 PID 是 3026950。你可以通过以下命令终止该进程:
kill 3026950
如果该进程没有响应,你可以使用 kill -9 强制终止:
kill -9 3026950
这样就会成功杀掉该 uvicorn 进程。

浙公网安备 33010602011771号