如何让 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 命令终止它。步骤如下:

  1. 通过 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 进程。




 

posted @ 2024-09-10 09:57  AlphaGeek  阅读(2399)  评论(0)    收藏  举报