【问题标题】:Gateway timeout 504 when moving from django development server to Nginx/uWSGI?从 django 开发服务器移动到 Nginx/uWSGI 时网关超时 504?
【发布时间】:2014-09-09 19:01:22
【问题描述】:

我有一个 Django 应用程序,它与远程 Raspberry Pi 对话以通过 Pi 的相机获取图像。每当我在应用程序中测试“获取新图像”按钮时,浏览器都会挂起大约 60 秒,并且图像永远不会到达。

Raspberry Pi 正在尝试将图像发布到 Django 应用程序,然后应该将其保存到持久存储中。

Nginx 的日志在 60 秒标记处显示 504“网关超时”。然而,当我使用 Django 开发服务器并花费大约一秒钟的时间来发布图像时,这很顺利。现在怎么了?

【问题讨论】:

    标签: django nginx uwsgi


    【解决方案1】:

    确保您正在运行具有多个进程和线程的 uWSGI。

    你可以在 uWSGI 命令行中添加:

    --processes 4 --threads 2
    

    或在 uWSGI ini 文件中:

    processes = 4
    threads = 2
    

    如果 Pi 在等待向用户显示结果的同时将图像 POST 回应用程序,那么 uWSGI 需要能够同时处理这两个事情。

    另一种可能性是您的 django 应用程序本身使用线程,并且没有 uWSGI 的 --threads N--enable-threads 选项,当您的应用程序运行时 GIL 未启用。将--enable-threads(或enable-threads = true 添加到ini 文件)将启用GIL,而无需启动多个应用线程。

    如果您怀疑您的应用程序的线程可能是问题,请参阅 uWSGI 文档中的 a note on python threads

    无论如何,如果您看到网关超时,请确保您已提供足够的并发性。

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 2015-12-25
      • 2015-02-09
      • 2019-09-29
      • 2016-11-28
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多