我目前正在开发一个基于flask的应用程序。 它运行良好,使用app.run()手动产生服务器。 我试过现在通过mod_wsgi运行它。 奇怪的是,我得到了一个500错误,并没有在日志中。 我已经调查了一下,这里是我的发现。 插入一行像print >>sys.stderr, "hello"按预期工作。 该消息显示在错误日志中。 在不使用模板的情况下调用一个方法时,它的工作原理就好 没有500错误。 使用简单的模板也可以。 但是 ,只要我触发模板内的数据库访问(例如循环查询),我得到的错误。 我的直觉告诉我,这是SQLAlchemy发出错误,也许一些日志configuration导致日志在应用程序的某个点被丢弃。 另外,为了testing,我正在使用SQLite。 据我所知,这只能从一个线程访问。 所以,如果mod_wsgi产生更多的线程,它可能会破坏应用程序。 我有点不知所措,因为它只能在mod_wsgi后面运行,这似乎也吞噬了我的错误。 我能做些什么来使错误冒泡到Apache的error_log? 作为参考,代码可以在这个github永久链接 。
什么可能导致这个错误: $ sudo tail -n 100 /var/log/apache2/error.log' [Wed Dec 29 15:20:03 2010] [error] [client 220.181.108.181] mod_wsgi (pid=20343): Exception occurred processing WSGI script '/home/username/public_html/idm.wsgi'. [Wed Dec 29 15:20:03 2010] [error] [client 220.181.108.181] IOError: failed to write data 这是WSGI脚本: $ cat public_html/idm.wsgi import os import sys sys.path.append('/home/username/public_html/IDM_app/') os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() 为什么Django不能写数据? 我正在运行Django […]
让我感谢你在Stack Overflow社区帮助我处理各种Django和Apache(带有mod_wsgi)错误。 到目前为止,我已经询问了大约5个相关的问题,现在我越来越接近在生产网站上发布我的内容了! 所以我知道有很多类似的问题,我已经阅读了一些 有关 在 Django 上 提供 静态 媒体 文件 的 问题 。 我读了关于STATIC_URL , STATIC_ROOT ,(很快将被废弃)的ADMIN_MEDIA_PREFIX ,并在Apacheconfiguration中设置Alias /media/ … 我试图逐个testing每个解决scheme,但是我无法获得任何工作。 这是我的pipe理网站现在看起来像 我也有一个奇怪的情况下, 任何子域在我的服务器上工作。 例如,我试图设置我的服务器,使http://www.satoshi.example.com/将允许我的正常(非Django)内容,而http://django.satoshi.example.com/将允许我的Django内容被服务。 但目前任何子域名,无论是satoshi.example.com或blahblahasdas.satoshi.example.com服务我的Django文件(我知道,因为我可以去两个网站上的/admin页面,虽然他们将在不同的会议)。 无论如何,这里是我的服务器上运行CentOS (不知道哪个版本), Apache 2.2.15 , Python 2.6.6 , django 1.3.1 ,和mod_wsgi 3.2 。 我会发布我认为是最相关的文件和configuration如下: 每次我重新启动时,Apache都会抛出这些错误 [Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module 'threading' […]
我试图让两个(或更多)Django应用程序设置在相同的域下的子目录,例如: http://example.com/site1/ http://example.com/site2/ 我知道,通常这可以通过设置一个像这样的apache虚拟主机: <VirtualHost *:80> … WSGIScriptAlias /site1 /path/to/site1.wsgi WSGIScriptAlias /site2 /path/to/site2.wsgi </VirtualHost> 现在,我已经validation每个网站都是单独运作的。 但是,当我尝试并行运行时,apache会将我发送到工作进程首先加载的任何一个站点。 例: 重新启动configuration为服务6个线程的Apache 加载example.com/site1/,获取正确的页面 加载example.com/site2/,获取正确的页面 重复2和3 2次。 重复刷新example.com/site1/,观看它从一个站点到另一个站点的循环。 实际上,对于任何给定数量的工作进程,无论WSGIScriptAlias指令是什么,它都会将发送请求的请求总数循环到先到达的那个请求中。 无论我做什么(设置WSGIProcessGroup,守护进程模式与embedded模式或指令),它都会继续出现这种行为。 如果任何人都可以指出我在这里做错了什么,这将是惊人的!
我一直在玩我自己的networking服务器(Apache + Ubuntu)和Python。 从我所看到的有3(?)个主要的方法来做到这一点: Apacheconfiguration为处理.py作为CGI Apacheconfiguration为使用现在已过时的mod_python(?) Apacheconfiguration为使用mod_wsgi 我记得读到Django喜欢mod_wsgi,我有点对学习Django感兴趣(我听说他们的官方教程是相当优秀的)。 什么是“推荐”设置? 我认为真的没有理由再使用mod_python,但处理.py作为cgi和mod_wsgi之间有什么区别? 是不是可以同时运行(你想要吗?),还是只是一个荒谬的想法,我应该停止思考这样的疯狂的事情? 我想我真的只是寻找一个关于Apache + Python的入门书(链接也很好) – 到目前为止我所遇到的一切都是非常有用的信息 – 它们主要是如何做的。
我用Apache和mod_wsgi和PostgreSQL的django(都在同一主机上),我需要处理很多简单的dynamic页面请求(每秒数百)。 我面临的问题是,Django没有持久的数据库连接,并重新连接每个请求(大约需要5ms)的瓶颈。 在做基准testing时,我得到了持续的连接,我可以处理接近500 r / s的速度,而没有得到50 r / s的速度。 任何人有任何build议? 如何修改Django使用持久连接? 或者加速从python到数据库的连接 提前致谢。
我想在使用Debian 5的同一台服务器上托pipe几个站点,比如我有site1 , site2和site3 ,并假设我的ip是155.55.55.1 : site1: 155.55.55.1:80 , script at /opt/django/site1/ site2: 155.55.55.1:8080, script at /opt/django/site2/ site3: 155.55.55.1:8090, script at /opt/django/site3/ 这是我的Apache默认值: <VirtualHost *:80> ServerName / ServerAlias */ DocumentRoot /opt/django/site1/ LogLevel warn WSGIScriptAlias / /opt/django/site1/apache/django.wsgi Alias /media /opt/django/site1/media/statics Alias /admin_media /home/myuser/Django-1.1/django/contrib/admin/media </VirtualHost> <VirtualHost *:80> DocumentRoot "/usr/share/phpmyadmin" ServerName /phpmyadmin Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options […]
我的简单的Django应用程序在debugging模式( manage.py runserver )下工作正常,并且在我的开发箱上工作在WSGI + Apache下,但是当我推到EC2时,我开始接收错误Bad Request (400) (10-80%的时间) Bad Request (400)我试图查看任何url(无论是在我的应用程序或在Djangopipe理员。 我在哪里可以find有关此debugging信息? 即使使用LogLevel=info ,也不会出现在/var/log/apache2/error.log 。 我已经检查了版本,logging了请求环境(参见ModWSGIdebugging提示 )并且没有看到重大区别。 剩下的一个想法是,我使用的是基于Python 2.7.1构build的Ubuntu 12.04(libapache2-mod-wsgi 3.3-4build1)中的mod_wsgi; 我有Python 2.7.3。 Django是1.6,比Ubuntu Precise版本更新。 我犹豫从源码开始构build软件包,因为它很难清理,而且这些看起来像是小版本的变化… 感谢您的帮助。 (作为参考,这里是Apacheconfiguration和WSGI应用程序) Apacheconfiguration(000-默认) <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi … rz.WSGI应用程序 import os import sys import django.core.handlers.wsgi import pprint path = '/usr/local/share/rz' if path not […]
什么用于大型的python WSGI应用程序,Apache + mod_wsgi或Nginx + mod_wsgi? 哪种组合需要更多的内存和CPU时间? 哪一个更快? 哪一个比另一个更稳定? 我也想使用CherryPy的WSGI服务器,但是我听说它不太适合一个非常高负载的应用程序,你对此有什么了解? 注意 :我没有使用任何Python Web框架,我只是从头开始编写整个事情。 注意 :其他build议也是受欢迎的。
我试图通过SSL安装trac和mod_wsgi。 我试图手动安装它,但这并没有很好的工作,所以我开始遵循这个: trac-on-ubuntu 我跳过了svn部分,因为我想用git来代替。 第一次编辑httpd.conf之后: WSGIScriptAlias /trac /var/trac/apache/trac.wsgi <Directory /var/trac/apache> WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> 我重新启动apache只得到这个错误: * Restarting web server apache2 (98)Address already in use: make_sock: could not bind to address [::]:443 [ OK ] 做这些没有显示。 netstat -anp | grep 443 fuser 443/tcp 这样做并没有产生任何东西,除了我跑的grep命令: ps -aux | grep httpd 为什么当没有任何东西出现时,别的什么东西在使用端口? 编辑:你们会笑这个。 我在ports.conf中有一个额外的listen […]