问题标签 [mod-wsgi]

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 投票
5 回答
492 浏览

python - 有没有更好的方法来通过 HTTP 提供昂贵的阻塞 python 进程的结果?

我们有一个 Web 服务,它为较大的 MP3 文件的固定库存中的小片段、任意片段提供服务。MP3 文件由 python 应用程序即时生成。该模型是,向指定您想要的段的 URL 发出 GET 请求,并获得一个audio/mpeg流作为响应。这是一个昂贵的过程。

我们使用 Nginx 作为前端请求处理程序。Nginx 负责缓存常见请求的响应。

我们最初尝试在后端使用 Tornado 来处理来自 Nginx 的请求。如您所料,阻塞的 MP3 操作使 Tornado 无法完成它的工作(异步 I/O)。所以,我们采用了多线程,这解决了阻塞问题,并且表现得很好。然而,它引入了一个微妙的竞争条件(在现实世界的负载下),我们还无法诊断或重现。竞争条件破坏了我们的 MP3 输出。

因此,我们决定将我们的应用程序设置为 Apache/mod_wsgi 后面的简单 WSGI 处理程序(仍然在前面使用 Nginx)。这消除了阻塞问题和竞争条件,但在现实世界条件下在服务器上创建了级联负载(即 Apache 创建了太多进程)。我们现在正在调整 Apache/mod_wsgi,但仍处于试错阶段。(更新:我们已经切换回 Tornado。见下文。)

最后,问题是:我们错过了什么吗?有没有更好的方法通过 HTTP 提供 CPU 昂贵的资源?

更新:感谢 Graham 的文章,我很确定这是一个 Apache 调优问题。与此同时,我们又回到了使用 Tornado 并试图解决数据损坏问题。

对于那些急于解决这个问题的人来说,Tornado 和一些多线程(尽管线程引入了数据完整性问题)可以在小型(单核)Amazon EC2 实例上可接受地处理负载。

0 投票
3 回答
2110 浏览

python - mod_wsgi on Snow Leopard python 版本不匹配

我正在尝试在 Mac OS X 10.6 上使用非默认 python 安装在 Apache 2.2.14 下运行 mod_wsgi 3.1。

下载 mod_wsgi 源代码后,我运行:

然后

然后我再次启动apache

当我 cat /var/log/httpd/error_log 我看到:

[2009 年 12 月 21 日星期一 12:27:26] [警告] mod_wsgi:为 Python/2.6.4 编译。

[2009 年 12 月 21 日星期一 12:27:26] [警告] mod_wsgi:运行时使用 Python/2.6.1。

[Mon Dec 21 12:27:26 2009] [notice] Apache/2.2.14 (Unix) DAV/2 mod_wsgi/3.1 Python/2.6.1 已配置 -- 恢复正常操作

当我运行 otool -L mod_wsgi.so 时看到:

mod_wsgi.so:

/System/Library/Frameworks/Python.framework/Versions/2.6/Python(兼容版本2.6.0,当前版本2.6.1)

/usr/lib/libSystem.B.dylib(兼容版本 1.0.0,当前版本 125.0.0)

是什么赋予了?为什么要和系统框架挂钩?

这是我的 mod_wsgi 配置和构建命令的输出:


阿基米德:mod_wsgi-3.1 awolf$ ./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python

检查 apxs2... 否

检查 apxs... /opt/apache2/bin/apxs

检查 Apache 版本... 2.2.14

配置:创建 ./config.status

config.status:创建 Makefile

阿基米德:mod_wsgi-3.1 awolf$ make

/opt/apache2/bin/apxs -c -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -Wc,'-arch x86_64' mod_wsgi.c -L/usr/local/ Cellar/python/2.6.4/lib -L/usr/local/Cellar/python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl /Library/Webserver/build/libtool --静音 --mode=compile gcc -prefer-pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -I/opt/apache2/include -I/opt/apache2/include -I/opt/apache2/include - arch x86_64 -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo

在 /usr/local/Cellar/python/2.6.4/include/python2.6/Python.h:125 包含的文件中,

/usr/local/Cellar/python/2.6.4/include/python2.6/modsupport.h:27:警告:'PyArg_ParseTuple' 是无法识别的格式函数类型 /Library/Webserver/build/libtool --silent --mode =link gcc -o mod_wsgi.la -rpath /opt/apache2/modules -module -avoid-version mod_wsgi.lo -L/usr/local/Cellar/python/2.6.4/lib -L/usr/local/Cellar/ python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl

阿基米德:mod_wsgi-3.1 awolf$ sudo make install

密码:

/opt/apache2/bin/apxs -i -S LIBEXECDIR=/opt/apache2/modules -n 'mod_wsgi' mod_wsgi.la

/Library/Webserver/build/instdso.sh SH_LIBTOOL='/Library/Webserver/build/libtool' mod_wsgi.la /opt/apache2/modules

/Library/Webserver/build/libtool --mode=install cp mod_wsgi.la /opt/apache2/modules/

cp .libs/mod_wsgi.so /opt/apache2/modules/mod_wsgi.so

cp .libs/mod_wsgi.lai /opt/apache2/modules/mod_wsgi.la

cp .libs/mod_wsgi.a /opt/apache2/modules/mod_wsgi.a

chmod 644 /opt/apache2/modules/mod_wsgi.a

ranlib /opt/apache2/modules/mod_wsgi.a

0 投票
1 回答
926 浏览

python - Django + mod_wsgi 如何影响 python 路径?

我在 /domains/somedomain.com/libs/ 中使用我的 python 库进行了简单的设置,并且我的所有测试都运行良好。我用 DJANGO_SETTINGS_MODULE 启动 WSGI 到“somedomain.settings”,其中 somedomain 是 libs/ 中的一个包

突然,将 pywapi.py 添加到 libs/ 时,我无法在访问站点时导入它。但是,如果我将“import pywapi”添加到我的 wsgi 脚本中,它会在被 Apache 命中时失败,但如果我只是编写它就会成功。WSGI 本身实际上是在将 libs/ 添加到路径中,所以我知道它在运行时应该在那里。路径也是绝对的,因此 CWD 的任何更改都不应该导致这种情况。

我想不出其他任何事情,而且在我原本富有成效的早上的一半时间里,我一直在修补它。

0 投票
2 回答
1879 浏览

python - Python中的跟踪系统和实时统计分析

这个问题与一个较老的问题有关:MySQL tracking system。简而言之:我必须使用 Python 实现一个具有高负载的跟踪系统。对于数据库部分,我选择了 mongoDB(这听起来像是适合这项工作的工具)。开发语言将是 Python。

我正在考虑在 nginx 后面使用几个 CherryPy 应用程序实例。这背后的原因是我不想自己处理所有 wsgi 部分,但另一方面,我不需要一个完整的 Web 框架,因为应用程序很简单并且不需要 ORM。

我的问题是:

  • 我应该使用 CherryPy 内置服务器还是应该使用 Apache 和 modwsgi(或完全使用其他服务器)?

  • 这听起来像一个合理的方法(nginx,mongoDB)吗?如果不是,你会推荐什么?

先感谢您。

0 投票
1 回答
778 浏览

python - 未知的 Authn 提供者:wsgi ...失败!

我在另一台服务器上进行了 wsgi 身份验证,但是第二台服务器在重新加载消息时不接受相同的配置和错误:

这是配置文件的相关部分(第 12 行是 WSGIAuthUserScript ...)

和 auth_test.wsgi 文件:

mod-wsgi.conf 和 mod-wsgi.load 都已启用。当然必须有/something/不同,但我不知所措。

0 投票
3 回答
7878 浏览

python - django 中带有 mod_wsgi 的静态文件

我搜索了很多,但我的 django 网站的静态文件(css、图像、...)仍然存在问题。

我在archlinux 64位上使用mod_wsgi和apache

我已将其添加到我的 http.conf 中:

我尝试在我的主文件夹中使用 django.wsgi,但它不起作用(permission denied to access /)(奇怪的是,如果我使用这里给出的测试脚本它会起作用)

所有目录和内容(apache 文件夹、wsgi-script、martfiles)都具有775 root:devusersdevusers 组的权限,包括我的用户、http 和 root

在我的模板 base.html 中,我以这种方式调用 css:

和 /var/log/http/error.log 中的错误

/etc/httpd/conf/http.conf

/srv/http/wsgi-script/django.wsgi

/home/.../martfiles/settings.py

谢谢你


编辑:我确切地说我的 django 网站运行良好(会话除外,但我认为它不相关)所以我不确定它是否与 django.wsgi 文件相关(也许我错了)但可以肯定的是我应该能够从 apache 文件夹外部使用 django.wsgi

如果我更改行Alias /media /home/mart/programmation/python/django/martfiles/media/Alias /media /srv/http/media/提供正确的权限,它就可以工作。但我不想(也不应该)将我所有的媒体都放在 apache 文件夹中

0 投票
3 回答
8965 浏览

django - 找不到包 libapache2-mod-wsgi

我在 Django 中开发了一个网站,现在它必须投入生产。我想用 mod_wsgi 和 apache2 来做这件事。不幸的是,我在运行下一个命令时收到错误“找不到包 libapache2-mod-wsgi”:

我在 ubuntu 服务器 kermic(9.10) 上使用 apache2。

我还将输入我的 sources.list :

有人知道问题是什么吗?

0 投票
1 回答
1712 浏览

python - CherryPy 更改了我的响应代码

在我使用 mod_wsgi 和 Apache 上的 cherrypy 的 python 应用程序中,我的响应代码从 403 更改为 500。我明确地将其设置为 403。

即cherrypy.response.status = 403

我不明白客户端收到的响应代码在哪里以及为什么是 500。有没有人有这个问题的经验>

0 投票
3 回答
1719 浏览

ubuntu - 安装 mod_wsgi 3.1 时出错

我正在尝试在 Ubuntu 9.10 上安装 mod_wsgi 3.1,并且在尝试制作时出现此错误

问题是什么?

0 投票
2 回答
1685 浏览

django - Django + mod-wsgi + psycopg2 的问题

所以我第一次尝试让 Django 与 mod-wsgi 一起运行。我已经按照示例中所示配置了 Apache,并且我很确定我做的一切都是正确的。

我没有设置PYTHON_EGG_CACHE变量,所以它使用默认值:/var/www/.python-eggs。我已经创建了这个目录并使它对用户可写www-data

当我打开站点时,它会显示500.html模板的输出,这是我在日志中得到的内容:

这就是我所拥有的/var/www/.python-eggs/

psycopg2 egg 目录中唯一的文件是_psycopg.so. 没有tz.py文件,我认为这是问题所在。

请指教。

PS,我使用 buildoutdjangorecipe来部署 Django。buildout我与用户一起运行构建脚本。不确定这是否有意义。

PPS,psycopg2安装正确,因为我能够运行syncdb.