问题标签 [flup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
859 浏览

django - 多次安装 Django - 如何通过网络服务器 (Lighttpd) 配置透明多路复用?

这个问题从答案流向:如何在一台服务器上为 Django 设置多个具有不同数据库的帐户?

我没有在谷歌或其他地方看到过这样的东西(也许我的词汇有误),所以我认为输入可能是对互联网话语的有价值的补充。

怎么能像这样配置服务器:

  • 一种 Lighttpd 的安装
  • 作为 FastCGI 运行的多个 Django 项目
  • django项目可以随意添加/删除,不需要重启webserver
  • 根据当前用户将所有请求/响应透明重定向到特定 Django 安装

即给定 Django 项目(带有相应的 FastCGI 套接字):

  • 鲍勃 (/tmp/bob.fcgi)
  • 苏 (/tmp/sue.fcgi)
  • 乔 (/tmp/joe.fcgi)

以(过于简单的)脚本开始的 Django 项目如下:

我希望访问http://www.example.com/的流量根据登录的用户将请求定向到正确的 Django 应用程序。

换句话说,http://www.example.com应该是“be” /tmp/bob.fcgi 如果 bob 已登录, /tmp/joe.fcgi 如果 joe 已登录, /tmp/sue.fcgi 如果 sue已登录。如果没有人登录,它应该重定向到登录页面。

我已经考虑使用以下算法解复用“plexer”FastCGI 脚本:

  1. 如果设置了 cookie $PLEX,则通过管道将请求发送到 /tmp/$PLEX.fcgi

  2. 否则重定向到登录页面(根据用户名 => PLEX 的多对一映射设置 cookie PLEX)

当然,出于安全考虑,应该对 $PLEX 进行污点检查,并且 $PLEX 不应引起任何信任假设。

Lighttpd 配置会是这样(尽管 Apache、Nginx 等也可以很容易地使用):

输入和想法、有用的链接以及知道如何正确实现 FastCGI plexer 将不胜感激。

谢谢你。

0 投票
3 回答
4112 浏览

django - Flup 中未处理的异常

我正面临着 Flup 提出的可怕的“未处理异常”。可悲的是它是在网络服务器(lighttpd+flup)级别而不是在应用程序级别(Django)提出的。因此,不会就问题所在提出 500 封电子邮件。

我们整个团队都在努力清理代码库,以防有任何模棱两可的导入和类似的情况,只是为了消除由于模棱两可的导入而引发错误的机会。我们清理了代码中的许多内容。还是一样的例外。

坦率地说,我对 Flup 的错误处理感到非常沮丧。它什么也没告诉你。最糟糕的是,它向用户显示相同的“未处理异常”。我如何通过这个?

我检查了 lighttpd 日志。我所看到的只是“接口错误/连接已关闭”。它仅在我的应用程序在 FCGI 模式下运行时发生。所以问题在于flup实际上是如何处理我的代码(应用程序)的。我如何通过这个?

我检查了flup的替代方案,但Django明确地依赖flup(这是另一个限制,让我感到困惑)(参考:django_src/django/core/servers/fastcgi.py line:100 / 131)

我如何调试(至少)这种情况并解决问题?请帮帮我。该应用程序已关闭 3 天。

0 投票
1 回答
987 浏览

python - 如何使用 Python Flup fastcgi 服务器制作单例类?

我使用 Flup 作为 Django 的 fastcgi 服务器。

请向我解释如何使用单例?我不确定我是否理解 Flup 的线程模型。

0 投票
4 回答
222 浏览

python - 关于 python 网络“管道”的最佳持续更新资源

我是一名 Python 程序员,从事 Web 应用程序。我对应用程序级别有所了解。但我发现自己必须配置或调试的底层“管道”并没有那么多。

我正在考虑从使用 memcached 到 Flup、fcgi、WSGI 等的一切。

在在线查找有关这些信息时,Google 通常会提供较旧的文档(例如 2007 年之前的教程)、可能已解决或未解决的问题片段等。

是否有任何好的综合和最新资源来学习如何组装现代、高性能的服务器?一个解释架构原理和实际包的?

0 投票
2 回答
2160 浏览

python - FastCgi 崩溃——想要捕获所有异常但是如何捕获?

我有一个使用 fastcgi 在 apache 上运行的 django 应用程序(使用 Flup 的 WSGIServer)。

这通过 dispatch.fcgi 进行设置,连接如下:

runfastcgi 负责完成这项工作,最终在 WSGIHandler 上运行 WSGIServer。

有时会发生导致 fastcgi 崩溃的异常。

编辑:我不知道什么错误使 fastcgi 崩溃,或者 fastcgi 是否甚至崩溃。我只知道有时网站会宕机——一直宕机——直到我重新启动 apache。error.log 中出现的唯一错误是损坏的管道和不完整的标头,如下所列。

不完整的标题:

注意:我已将敏感信息或杂乱信息替换为“...”

断管:

注意:这恰好是针对 trac 站点而不是 django 应用程序,但它看起来是一样的。

我查看了 /var/log/apache2/error.log,但似乎找不到崩溃的原因。我有时会遇到内存交换问题,但我认为这是不同的。(请原谅我的无知。我愿意学习如何更好地实现和调试服务器管理的东西。)

我想用 try/except 包装 runfastcgi。处理随机异常的最佳方法是什么(直到我找出实际原因)?

我相信 WSGIServer 处理许多请求。如果我发现异常,我可以重新调用 runfastcgi 而不必担心无限循环吗?我应该为有问题的异常调用请求返回一个错误 HttpRequest 吗?我什至不知道该怎么做。

我一直在查看 django/core/servers/fastcgi.py 和 django/core/handlers/wsgi.py 和 django/http/ init .py

我无法在理解 Flup 方面取得进展。

有我可以学习的想法或经验吗?

谢谢!

0 投票
2 回答
2189 浏览

nginx - 带有 mod_wsgi 的 nginx

我通常使用 FastCGI在nginx后面运行 Web 应用程序。我想尝试使用 mod_wsgi,但它似乎已经过时了。作者提到它适用于 0.5.34 版本,但我现在运行的是 0.7.62。

wiki 文章警告模块和更高版本的 nginx的编译问题。有人使用 mod_wsgi 和更新版本的 nginx 吗?我还缺少另一个模块吗?

0 投票
2 回答
791 浏览

python - 空载条件下的flup/fastcgi cpu使用情况

我通过flup将Django作为线程fastcgi运行,由lighttpd提供服务,通过套接字进行通信。

每个 fastcgi 线程在空载时的预期 CPU 使用率是多少?在启动时,每个线程会以 3-4% 的 CPU 使用率运行一段时间,然后在几个小时内回落到 0.5% 左右。它不会低于这个水平。

这么多CPU使用率正常吗?我的代码中是否有一些错误导致空闲循环需要更多的处理?我希望该进程在完全空闲时不会使用可测量的 CPU。

我没有用 Django 做任何复杂得可笑的事情,绝对没有什么需要扩展处理的。我意识到这不是很多负载,但如果这是我引入的错误,我想修复它。

0 投票
1 回答
863 浏览

python - 为共享服务器上的 http 请求定义 PYTHONPATH

我正在 Bluehost 上安装 Django,安装它的步骤之一是在他们的服务器上安装 Flup。我这样做了,当我通过 SSH 登录时,一切都很好。但是,当我实际在浏览器中点击该页面时,它找不到 Flup。我在服务器日志中收到此错误:

错误:没有名为flup的模块。无法加载flup包。为了将 django 作为 FastCGI 应用程序运行,您需要从http://www.saddi.com/software/flup/获取 Flup。如果您已经安装了 Flup,请确保您的 PYTHONPATH 中有它。

因为当我在 SSH 中时它会识别 Flup,所以我最好的猜测是我需要更改其他一些 bash 文件以使 PYTHONPATH 指向 http 请求的正确位置。但由于它是一个共享服务器,我在我的主目录之外没有很多特权。

有任何想法吗?

0 投票
2 回答
4192 浏览

python - 难以让flup fcgi脚本工作

我正在为使用 django 的客户建立一个站点。它已托管在共享主机上,无法使用 mod_wsgi。在过去的一年里,我使用 fcgi 让它工作,但是当我回来时,它就坏了。

我已经用一个简单的 hello world 脚本替换了 fcgi 脚本:

在我的本地服务器上测试和工作,但在托管服务器上,我收到此错误:

如果我查看错误日志,我会看到:

如果我 ssh 到服务器,我可以很好地运行脚本,输出如下:

我该如何解决?

添加信息:

脚本似乎根本没有运行。如果我在脚本顶部添加 import x 并从 ssh 运行它,我会看到 x.pyc 已创建。如果我 rm x.pyc,然后点击该站点,则不会创建 x.pyc。

我还注意到错误从

我希望我能找到这些退出状态的参考。

0 投票
2 回答
1522 浏览

django - Lighttpd + fastcgi + django:由于意外的 EOF,发送给客户端的响应被截断

我试图让我的基于 Django 的 webapp 进入一个有效的部署配置,并且在花了很多时间试图让它在 lighttpd / fastcgi 下工作之后,无法解决这个问题。当客户端第一次登录时,他们会收到来自服务器的大量数据转储,这些转储数据被分成几个约 1MB 大小的块,以 JSON 的形式发回。

每隔一段时间,客户端就会收到一个对其中一个块的截断响应,我会在 lighttpd 日志中看到这条消息:

我真的很想弄清楚为什么会发生这种情况(在./manage.py runserver模式下运行 Django 时不会发生这种情况)。以下是我尝试过的没有效果的事情:

  • 将块大小从 1MB 减少到 256K。尽管截断通常发生在 600K - 900K 标记附近,但我仍然在 256K 块大小以下截断。

  • 将Django 的minspareand值设置得非常高,这样会有很多闲置线程。maxchildrenrunfgci

  • 设置maxchildren为 1 以便只有一个线程。

  • 针对 lighttpd 和 Django 之间的 fastcgi 连接在 UNIX 套接字模式和 TCP/IP 模式之间切换。

我在谷歌上搜索了很多东西,但找不到任何似乎可以修复 Django 的东西(任何帮助似乎都围绕着调整 PHP 设置)。

我的设置是:

  • OSX 10.6.4

  • Python 2.6.1(系统)

  • 从 Macports 安装的 lighttpd (1.4.26_1+ssl)

  • 从flup网站上最新的Python egg安装的flup(尝试了1.0.2 stable和最新的1.0.3 devel)

  • 从 Django 网站上的 tarball 安装的 Django 1.2.1

我的 lighttpd 配置中的 FastCGI 块是:

runfcgi我用来启动 Django的命令目前是:

如果有人对如何阻止这种情况发生有任何见解,我们将不胜感激。如果我不能相对快速地解决这个问题,我将不得不放弃 lighttpd + fastcgi 并查看 Apache + mod_wsgi 或者可能是 nginx + fastcgi,并且进入另一个网络服务器配置的前景不是我期待的......

提前感谢您的帮助。

编辑:附加信息

我在轻量级论坛上发现了这个页面,表明这可能是 Django 的错……在那种情况下,PHP 崩溃了。我检查了我的 Django 端的东西,发现即使在截断之后,发送截断响应的 Python 线程仍然会在之后运行并为后续请求提供服务,所以看起来流没有被线程打破异常并崩溃。

我想弄清楚是 Django 的 fcgi impl 还是 Lighttpd 出了问题(因为这将决定迁移到 nginx + fastcgi 是否真的可以解决任何问题),所以我查看了 Wireshark 中的数据包跟踪. 截断之前发生的事情的简化日志如下:

好的数据包在开始时来自 Django(30082 为 8184 字节,然后再次在 30086 为另一个 8184 字节),然后由于某种原因在条目 30088 处 Lighttpd 向FINDjango 发送了一个 TCP,这可能是导致连接终止的原因,这就是你如何得到截断。

从表面上看,这似乎是 Lighttpd 的错,因为它看起来像是在它应该关闭之前关闭了东西......虽然我不确定它没有这样做,因为它收到了一些坏数据来自 Django,它通过关闭来做出反应。