【问题标题】:nginx + uwsgi 502 Bad Gateway pythonnginx + uwsgi 502 错误网关 python
【发布时间】:2015-07-14 21:48:28
【问题描述】:

我在 python 中运行一个脚本并且需要很长时间来处理。问题是如果函数需要很长时间才能运行,我猜 nginx 在他的配置中有超时,这可以防止某种错误,并阻止函数完全运行。

我只想知道我是否可以增加超时值。因为我在 nginx 的 conf 文件中尝试了一些命令,例如:

uwsgi_connect_timeout 75;
uwsgi_send_timeout 75;
uwsgi_read_timeout 75;
keepalive_timeout 650;

但这些都不起作用。

提前考虑

【问题讨论】:

  • 您的脚本需要多长时间才能运行? 75 并不比默认的 60 多很多。基于the docsuwsgi_read_timeout 是您要更改的那个。
  • 也很好奇你的脚本做了什么。您也许可以增加 nginx 的超时时间,但大多数用户不会停留那么久。
  • 基本上是一个脚本,它运行一个有 500 个用户的数据库,并使用它使用地理编码,它为我提供了用户地址的经度和纬度。使用 thar 我插入 mongodb 集合。这是因为地理编码有时会失败,我必须多执行 3 次此过程才能知道所有用户的地理位置。
  • 不过,很高兴知道如何防止 nginx 超时。我有一个在开发中使用的长时间运行的脚本,所以优化对我来说不是问题。我只想加载页面,但找不到防止 nginx 抛出 502 的神奇设置组合。

标签: python nginx uwsgi


【解决方案1】:

仅延长超时的问题在于,无论您将其设置多长时间,您都会在某个地方遇到限制。使用网络服务器、浏览器或您的地理编码调用。如果它在一个请求中经常失败 n 次,那么你就无法真正做出任何保证。

因此,与其让客户端请求挂在一个长时间运行的进程上(并且通过扩展冒着服务器超时的风险),不如使用celery 之类的东西来运行这些地理编码任务并在客户端提交您通过 javascript 的客户端请求并通过 ajax 轮询服务器以获取答案,直到它得到响应?

【讨论】:

  • 我有充分的理由想要更长的超时时间。这是客户端需要在预生产服务器上执行的一次性导入任务,并且重写代码以作为后台任务工作比简单地临时增加超时时间要长得多。
【解决方案2】:

我在 NGIX + uWSGI 配置中也遇到了 Bad gateway 错误,并且为了谷歌这个问题的人:它可能缺少 uwsgi python 插件。请参阅:uWSGI configuration issue: uwsgi fails without any error message.

【讨论】:

    【解决方案3】:

    我尝试了上述回复以及其他地方所写的所有内容,但没有奏效。

    我的解决方案是在 uwsgi.conf 和 nginx.conf 文件中更改我的套接字。

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2017-06-23
      • 2011-05-14
      • 2019-06-05
      • 2015-08-10
      相关资源
      最近更新 更多