问题标签 [fastcgi]

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 投票
2 回答
3595 浏览

python - django,fastcgi:如何管理长时间运行的进程?

我继承了一个 django+fastcgi 应用程序,需要对其进行修改以执行冗长的计算(最多半小时或更长时间)。我想要做的是在后台运行计算并返回“你的工作已经开始”类型的响应。在进程运行时,对 url 的进一步点击应返回“您的作业仍在运行”,直到作业完成,此时应返回作业的结果。对 url 的任何后续命中都应返回缓存的结果。

我是 django 的新手,十年来没有做过任何重要的网络工作,所以我不知道是否有内置的方法来做我想做的事。我已经尝试通过 subprocess.Popen() 启动进程,除了它在进程表中留下一个失效条目之外,它工作正常。我需要一个干净的解决方案,可以在完成后删除临时文件和进程的任何痕迹。

我还尝试过 fork() 和线程,但尚未提出可行的解决方案。对于我看来是一个非常常见的用例,是否有规范的解决方案?FWIW 这只会在流量非常低的内部服务器上使用。

0 投票
7 回答
5245 浏览

python - 使用 FastCGI 或 mod_python 运行 Django

你会推荐哪个?哪个更快,更可靠?apache mod_python 还是 nginx/lighttpd FastCGI?

0 投票
3 回答
2242 浏览

php - fastcgi 中的持久数据库连接

我正在将应用程序从 php 移植到 fastcgi (c)。我的主机运行 apache。

由于 fastcgi 应用程序将循环运行,因此我可以打开一个 mysql 连接,并为所有传入请求保持打开状态。这是推荐的吗?

我想我读过同样数量的意见,说连接比请求贵得多,而且它应该是持久的,另一方面,人们声称打开的连接是一种资源消耗,每次都应该关闭。

其中哪一项在我的上下文中是正确的?

0 投票
3 回答
3195 浏览

python - Windows和apache下的Python作为FastCGI

我需要在具有 windows/apache/FastCGI 的现有系统下运行一个简单的请求/响应 python 模块。

我尝试过的所有 python 的 FastCGI 包装器都只适用于 Linux(它们使用 socket.fromfd() 和其他类似的东西)。

是否有在 Windows 下运行的包装器?

0 投票
2 回答
1314 浏览

django - 如何在一台服务器上为 Django 设置多个具有不同数据库的帐户?

安装 Django 有哪些选择,以便多个用户(每个用户都有一个“帐户”)每个人都可以拥有自己的数据库?

语义相当直观。一个帐户可能有多个用户。一个账户有一个唯一的数据库(一个数据库对应一个账户)。图片 WordpressMU。:)

我考虑过这个:

  1. 外部解决方案 - 多路复用到多个服务器/守护程序

    多个 Django 安装,每个 Django 安装/项目对应一个设置自己的 DATABASE_NAME 的帐户,例如

    文件系统:

    然后为每个 bob 和 sue 运行一个 Django 实例。我不喜欢这种方法——它感觉很野蛮,而且闻起来很臭。但我相信它会起作用,并且根据建议,它可能是最干净、最聪明的方法。

    应用程序可以存储在其他地方;django配置唯一需要唯一的是settings.py(即使在那里,只有DATABASE_NAME等需要不同,其余的可以导入)。

    (顺便说一下,我使用的是 lighttpd 和 FastCGI。)

  2. 内部解决方案 - Django 多路复用数据库设置

    另一方面,我曾想过安装一个 Django,并且

    (a) 为每个数据库表添加一个“prefix_”,对应登录用户的账户;或者

    (b) 根据登录用户的帐户更改数据库。

    我对看到“Django 方式”来做这些特别感兴趣(希望它很简单)。例如,接受请求用户并将 django.conf.SETTINGS['DATABASE_NAME'] 更改为该用户帐户的数据库的中间件。

    这引发了危险信号,即。这是线程安全的吗?即更改 django.conf.SETTINGS 会影响其他进程吗?更改 django.conf.SETTINGS 是否存在固有的危险——数据库连接是否已经设置?重新启动公共 API 的数据库连接部分吗?-- 当我再次查看这个问题时,我将查看 Django 源代码。

    我意识到 2(a) 和 (b) 可能要求用户身份验证以不同于核心的机制存储和访问。

现在,我将使用 webserver 层的外部映射——它是目前最简单和最干净的。但是,我不喜欢为每个帐户运行 FastCGI 守护程序的想法——这似乎不必要地浪费内存,尤其是在有 2000 多个帐户的情况下。但是,我想保持这个讨论的开放性,因为这是一个有趣的问题,而且对于某些情况,解决方案似乎并不理想。

评论应有尽有。干杯

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 投票
4 回答
12627 浏览

perl - 为什么我的简单 fastCGI Perl 脚本会失败?

我不属于 Perl 世界,所以其中一些对我来说是新的。我正在运行安装了 apache2 和 mod_fcgid 软件包的 Ubuntu Hardy LTS。我想让 MT4 在 fcgid 而不是 mod-cgi 下运行(它似乎可以在普通的旧 CGI 下运行)。

我似乎连一个简单的 Perl 脚本都无法在 fcgid 下运行。我创建了一个简单的“Hello World”应用程序,并包含上一个问题的代码来测试 FCGI 是否正在运行。

我将脚本命名为 HelloWorld.fcgi(当前 fcgid 设置为仅处理 .fcgi 文件)。代码:

从命令行运行时,它会打印“plain old bored ...”当通过对 apache 的 http 请求调用时,我收到 500 Internal Server 错误,并且脚本的输出会打印到 Apache 错误日志中:

当我运行相同代码的 .cgi 版本时,它运行良好。知道为什么脚本的输出会进入错误日志吗?Apache 配置是默认的 mod_fcgid 配置加上,在 VirtualHost 指令中:

0 投票
5 回答
3153 浏览

python - IIS下的Python FastCGI——stdout写入问题

我的 Python FastCGI 代码有一个非常特殊的问题 - sys.stdout 的文件描述符为“-1”,所以我无法写入它。我在我的程序的第一行检查这个,所以我知道我的任何代码都没有改变它。

我试过sys.stdout = os.fdopen(1, 'w')了,但是那里写的任何东西都不会进入我的浏览器。

相同的应用程序在 Apache 下可以毫无困难地工作。

我正在使用 Microsoft 提供的用于 IIS 的 FastCGI 扩展,此处记录:http ://learn.iis.net/page.aspx/248/configuring-fastcgi-extension-for-iis60/

我在 fcgiext.ini 中使用这些设置:

谁能告诉我出了什么问题或告诉我应该去哪里寻找?

非常感谢所有建议...

0 投票
1 回答
426 浏览

fastcgi - 在 Windows IIS 服务器上处理 Fast CGI 中的终止

事实证明,寻找 Windows FastCGI 帮助非常困难。任何帮助将不胜感激。

FastCGi 的概念是进程在请求中存活下来,允许您在调用之间保持状态。这意味着您没有在调用之间打开数据库等的开销。

除此之外,FastCGI 是完全多路复用的: http ://cryp.to/publications/fastcgi/#MULTIPLEXING

问题出在 C API

libfcgi.dll 的源代码可在此处获得:http: //www.fastcgi.com/drupal/node/5

MS 不支持这一点,因为任何与 FCGI 或 IIS 相关的人都匆忙指出

0 投票
5 回答
13459 浏览

django - 如何优雅地重启 django 在 nginx 后面运行 fcgi?

我在使用 fcgi 连接的 nginx 后面运行一个 django 实例(通过使用 manage.py runfcgi 命令)。由于代码已加载到内存中,我无法在不杀死并重新启动 django fcgi 进程的情况下重新加载新代码,从而中断实时网站。重新启动本身非常快。但是通过首先杀死 fcgi 进程,一些用户的操作会被打断,这是不好的。我想知道如何重新加载新代码而不会造成任何中断。建议将不胜感激!