gpt4 book ai didi

python - 使用 nginx 和 Python 防止网站在更新期间关闭

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:03 25 4
gpt4 key购买 nike

我有一个托管在 Ubuntu 上的事件站点,使用 nginx,并且该站点是用 Python 编写的(CherryPy 是服务器,Bottle 是框架)。

我有一个 shell 脚本,用于复制我通过现有实时站点上传的 python 文件,这当然会导致 CherryPy 重新启动服务器,以便它运行最新的代码(我想要它)。问题是,在它停止和启动之间,默认的静态页面会显示给当时试图查看网站页面的任何不幸的人(希望他们没有提交表格)。我在更新时多次看到此页面。

我当前的设置是站点的两个副本在两个端口上运行,并使用 nginx 进行反向代理。所以我想如果我更新一个,等待几秒钟,然后更新另一个,那么网站将在 100% 的时间内正常运行,但情况似乎并非如此?

假设我在端口 8095 和 8096 上有反向代理,它们都显示相同的站点,但在硬盘驱动器上有两个相同的副本。我更新了端口 8095 的 python 文件,这导致该端口在 CherryPy 重新启动时关闭。不是每个人都应该打8096吗?它似乎不是这样工作的。我的文件复制脚本有 8 秒的延迟,根据 CherryPy 日志,第 2 个在第 1 个已经完成重启后 6 秒停止重启,但我看到了服务器关闭时显示的默认静态离线页面。我很困惑。根据日志,始终有一个端口可用。

这是我的 nginx.conf 的一部分:

upstream app_servers {
server 127.0.0.1:8095;
server 127.0.0.1:8096;
}

server {
server_name www.mydomain.com;
listen 80;

error_page 502 503 /offline/offline.html;

location /offline {
alias /usr/share/nginx/html/mysite/1/views/;
}

location / {
proxy_pass http://app_servers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
}
}

最佳答案

试试这个:From the manual

upstream app_servers {
server 127.0.0.1:8095 max_fails=1 fail_timeout=1;
server 127.0.0.1:8096 max_fails=1 fail_timeout=1;;
}

关于python - 使用 nginx 和 Python 防止网站在更新期间关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com