离开gunicorn的正确方法是什么?

nic*_*ine 36 python nginx flask gunicorn

我想制作Flask + Nginx + Gunicorn部署.我有Nginx设置和运行,我按照文档中的描述运行gunicorn:

gunicorn app:app
Run Code Online (Sandbox Code Playgroud)

但是当我退出服务器时,gunicorn进程会退出吗?正确的方法是确保它继续运行以便Nginx连接,并在崩溃时重新启动?

zhi*_*ang 51

--daemon运行gunicorn时使用选项.例:

gunicorn grand56.wsgi:application --name grand56 --workers 3 --user=root --group=root --bind=127.0.0.1:1001 --daemon

  • 我相信这应该是公认的答案 (4认同)
  • 如果失败,“--daemon”标志也会重新启动我的进程吗?或者我仍然需要使用 upstart、systemd、sysv(甚至是supervisor)来做这样的事情? (2认同)
  • 启动gunicorn时使用linux“nohup”安全吗? (2认同)
  • 一旦开始,你如何阻止它? (2认同)

Rac*_*ers 20

我会调查像Supervisor这样的东西.

  • supervisor 适用于生产级系统,但这不是问题的答案。检查下面的其他答案 (7认同)

Gih*_*age 12

使用--daemon到gunicorn的绑定命令.例如:

gunicorn --bind 0.0.0.0:8001 your_project.wsgi --daemon
Run Code Online (Sandbox Code Playgroud)


ton*_*o.j 8

尝试这个:

nohup gunicorn app:app &
Run Code Online (Sandbox Code Playgroud)


Sea*_*ira 7

需要注意的关键是,当您从命令行启动进程时,它是终端进程的子进程(即子进程bash).当您退出服务器时,您的bash进程将被终止 - 就像它的所有子进程一样.

您将需要使用您拥有的任何系统来管理nginx还管理gunicorn(从init.dUpstart脚本到Monit ,Supervisor,Bluepill,Foreman等专业应用程序进程监视器)


Mic*_*lon 6

注意肖恩.

但是你可以像这样运行它:

nohup gunicorn -c config.py </dev/null >/dev/null 2>&1它将不再依赖于终端连接.如果要保存任何输出,可以替换>/dev/null为类似的东西>somelogfile.

但对于生产用途,最好将其集成到用于管理流程的任何工具中.