Skip to main content
 首页 » 编程设计

python之Nginx+FastCGI 上的 Django 站点运行(504 网关超时)

2024年09月03日35tuyile006

有时我的整个基于 Django 的站点都会出现 504 网关超时错误,因此无法显示任何页面。

是否可以编写一个 shell 程序并使其每 5 分钟运行一次 cronjob 以检测此类错误并在需要时重启 FastCGI 进程?

我目前正在使用下面的命令重启 FastCGI 以防它崩溃,但它不适用于上述情况,因为当发生 504 网关错误时,进程仍在运行。

ps ax | grep -v grep | grep port=8001 > /dev/null || restart_fcgi.sh 

请您参考如下方法:

也许您应该首先找出网站为什么开始提供 504 错误服务 - 检查日志(如果您没有足够的信息,则添加日志记录),然后解决任何问题。或者,您可能会发现 nginx + apache + mod_wsgi 是一种更稳定的方法 - nginx 是一种出色的前端网络服务器,可用于提供静态内容,但 Apache 非常适合托管动态进程。尝试将它们结合起来。我以前使用 nginx + fastcgi,但我发现前者是一种更稳定的方法。

如果您仍然无法确定是什么导致了您的问题,您可以设置一个在本地运行的监控脚本并检查响应代码 - 如果它发现 5XX,它可以强制重启您的 fastcgi 进程。您可以使用 Python + httplib 作为脚本,并使用 os.system 运行上面的 shell 脚本(加上合适的 kill -9 语句)。