问题标签 [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.
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 脚本:
如果设置了 cookie $PLEX,则通过管道将请求发送到 /tmp/$PLEX.fcgi
否则重定向到登录页面(根据用户名 => PLEX 的多对一映射设置 cookie PLEX)
当然,出于安全考虑,应该对 $PLEX 进行污点检查,并且 $PLEX 不应引起任何信任假设。
Lighttpd 配置会是这样(尽管 Apache、Nginx 等也可以很容易地使用):
输入和想法、有用的链接以及知道如何正确实现 FastCGI plexer 将不胜感激。
谢谢你。
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 天。
python - 如何使用 Python Flup fastcgi 服务器制作单例类?
我使用 Flup 作为 Django 的 fastcgi 服务器。
请向我解释如何使用单例?我不确定我是否理解 Flup 的线程模型。
python - 关于 python 网络“管道”的最佳持续更新资源
我是一名 Python 程序员,从事 Web 应用程序。我对应用程序级别有所了解。但我发现自己必须配置或调试的底层“管道”并没有那么多。
我正在考虑从使用 memcached 到 Flup、fcgi、WSGI 等的一切。
在在线查找有关这些信息时,Google 通常会提供较旧的文档(例如 2007 年之前的教程)、可能已解决或未解决的问题片段等。
是否有任何好的综合和最新资源来学习如何组装现代、高性能的服务器?一个解释架构原理和实际包的?
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 方面取得进展。
有我可以学习的想法或经验吗?
谢谢!
python - 空载条件下的flup/fastcgi cpu使用情况
我通过flup将Django作为线程fastcgi运行,由lighttpd提供服务,通过套接字进行通信。
每个 fastcgi 线程在空载时的预期 CPU 使用率是多少?在启动时,每个线程会以 3-4% 的 CPU 使用率运行一段时间,然后在几个小时内回落到 0.5% 左右。它不会低于这个水平。
这么多CPU使用率正常吗?我的代码中是否有一些错误导致空闲循环需要更多的处理?我希望该进程在完全空闲时不会使用可测量的 CPU。
我没有用 Django 做任何复杂得可笑的事情,绝对没有什么需要扩展处理的。我意识到这不是很多负载,但如果这是我引入的错误,我想修复它。
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 请求的正确位置。但由于它是一个共享服务器,我在我的主目录之外没有很多特权。
有任何想法吗?
python - 难以让flup fcgi脚本工作
我正在为使用 django 的客户建立一个站点。它已托管在共享主机上,无法使用 mod_wsgi。在过去的一年里,我使用 fcgi 让它工作,但是当我回来时,它就坏了。
我已经用一个简单的 hello world 脚本替换了 fcgi 脚本:
在我的本地服务器上测试和工作,但在托管服务器上,我收到此错误:
如果我查看错误日志,我会看到:
如果我 ssh 到服务器,我可以很好地运行脚本,输出如下:
我该如何解决?
添加信息:
脚本似乎根本没有运行。如果我在脚本顶部添加 import x 并从 ssh 运行它,我会看到 x.pyc 已创建。如果我 rm x.pyc,然后点击该站点,则不会创建 x.pyc。
我还注意到错误从
到
我希望我能找到这些退出状态的参考。
django - Lighttpd + fastcgi + django:由于意外的 EOF,发送给客户端的响应被截断
我试图让我的基于 Django 的 webapp 进入一个有效的部署配置,并且在花了很多时间试图让它在 lighttpd / fastcgi 下工作之后,无法解决这个问题。当客户端第一次登录时,他们会收到来自服务器的大量数据转储,这些转储数据被分成几个约 1MB 大小的块,以 JSON 的形式发回。
每隔一段时间,客户端就会收到一个对其中一个块的截断响应,我会在 lighttpd 日志中看到这条消息:
我真的很想弄清楚为什么会发生这种情况(在./manage.py runserver
模式下运行 Django 时不会发生这种情况)。以下是我尝试过的没有效果的事情:
将块大小从 1MB 减少到 256K。尽管截断通常发生在 600K - 900K 标记附近,但我仍然在 256K 块大小以下截断。
将Django 的
minspare
and值设置得非常高,这样会有很多闲置线程。maxchildren
runfgci
设置
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 向FIN
Django 发送了一个 TCP,这可能是导致连接终止的原因,这就是你如何得到截断。
从表面上看,这似乎是 Lighttpd 的错,因为它看起来像是在它应该关闭之前关闭了东西......虽然我不确定它没有这样做,因为它收到了一些坏数据来自 Django,它通过关闭来做出反应。