我有这个python cgi脚本,检查它是否从同一个IP多次访问,如果一切正常,读取一个大文件格式磁盘(11MB),然后将其作为下载返回.
它有效,但性能很糟糕.瓶颈似乎是一遍又一遍地读取这个巨大的文件:
def download_demo():
"""
Returns the demo file
"""
file = open(FILENAME, 'r')
buff = file.read()
print "Content-Type:application/x-download\nContent-Disposition:attachment;filename=%s\nContent-Length:%s\n\n%s" % (os.path.split(FILENAME)[-1], len(buff), buff)
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它更快?我想过使用ram磁盘来保存文件,但必须有一些更好的解决方案.使用mod_wsgi而不是cgi脚本帮助?我能将大文件保存在apache的内存空间吗?
任何帮助是极大的赞赏.
我已经在Django中开发了一个网站,现在它必须投入生产。我想用mod_wsgi和apache2做。不幸的是,在运行下一个命令时,出现错误“找不到软件包libapache2-mod-wsgi”:
sudo apt-get install libapache2-mod-wsgi
Run Code Online (Sandbox Code Playgroud)
我在ubuntu服务器kermic(9.10)上使用apache2。
我还将输入我的sources.list:
deb http://archive.ubuntu.com/ubuntu karmic main
deb http://security.ubuntu.com/ubuntu karmic-security main
Run Code Online (Sandbox Code Playgroud)
有人知道是什么问题吗?
我正在编写一个简单的Python wsgi应用程序,并且被模块导入错误所困扰。我在当前目录中有一个.py文件,该文件最初无法导入。通过添加
sys.path.insert(0,'/ Users / guhar / Sites / acom')
该模块的导入工作正常。但是我现在尝试导入通过easy_install安装的模块,但是导入失败。我尝试设置
sys.path.insert(0,'/Library/Python/2.5/site-packages/')
其中包含鸡蛋文件,但无济于事。我以为“ /Library/Python/2.5/site-packages/”下的所有软件包都可用于WSGI应用程序。
有人有指针吗?
我正在Webfaction上设置一个实时服务器的开发版本,在我的本地机器上运行Django应用程序(在没有任何错误的情况下运行) - XP,运行带有Python 2.6的XAMPP Lite - 我可以提交更改通过Git.
XAMPP启动并运行正常,并且服务器在加载WSGI模块时完美启动.问题是当我设置我的Python路径时,它们以'nix格式(带/)设置为一半,在Windows中设置一半(带反斜杠).
这是本地机器Apache错误,显示损坏的python路径:
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] mod_wsgi (pid=1436): Exception occurred processing WSGI script 'C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/dev.wsgi'.
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] File "C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/lib/python2.5\\django\\core\\handlers\\wsgi.py", line 230, in __call__
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] self.load_middleware()
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] File "C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/lib/python2.5\\django\\core\\handlers\\base.py", line 42, in load_middleware
[Fri Oct 08 14:52:53 2010] …Run Code Online (Sandbox Code Playgroud) 所以这是设置:
如果我在设置文件的INSTALLED_APPS部分删除了应用程序(名称为myapp),整个站点工作正常我在apache2.conf中添加了WSGIPythonHome
我可以通过Django(python manage.py shell)中的交互式python shell成功访问应用程序.我可以创建,更新和删除数据.
我正在使用Ubuntu 10.04 Lucid Lynx的标准Apache 2设置(启用站点,启用mods,apache2.conf等)
我正在运行位于/ home/ygamretuta/dev/myproject的virtualenv
我的django项目位于/ home/ygamretuta/dev/site1
错误日志文件说明(最后2行):
File "/home/ygamretuta/dev/myproject/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
TemplateSyntaxError: Caught ImportError while rendering: No module named myapp
Run Code Online (Sandbox Code Playgroud)
我的django.wsgi包含这个:
import os, sys
sys.path.append('/home/ygamretuta/dev')
os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
我的site1.com虚拟主机文件(包含在sites-available文件夹中)包含此文件(删除了其他详细信息):
WSGIDaemonProcess ygamretuta processes=2 maximum-requests=500 threads=1
WSGIProcessGroup ygamretuta
WSGIScriptAlias / /home/ygamretuta/dev/site1/apache/django.wsgi
Run Code Online (Sandbox Code Playgroud)
我能错过什么?如果自定义应用程序(我使用manage.py startapp制作的应用程序)未被注释掉,我将收到e 500内部服务器错误
我是django开发和整体Web应用程序开发的新手,但我是一名程序员.
我想知道在DotCloud上部署django应用程序的步骤是什么,它将在带有mod_wsgi的apache服务器上运行.Nginx将用于提供媒体文件,Postgresql将用于数据库.这将与memchache一起使用.
本教程:http://dev.lethain.com/the-django-and-ubuntu-intrepid-almanac/基本上做了我想要的,但我想弄清楚如何使用DotCloud.
我觉得Dotcloud文档不够完整,无法提供完成此操作的必要信息,所以希望有人会提供相关信息.
感谢您的帮助与合作.我很感激.
我在同一台服务器上有两个基于django的Web应用程序.其中一个我将调用CORRECT_PROJECT,另一个调用WRONG_PROJECT
最后一个CORRECT_PROJECT是使用虚拟环境安装的,并使用不同版本的django(1.4).有一个非常奇怪的问题:有时,通常在注销或电子邮件确认后(但有时看起来只是随机!),服务器返回500内部服务器错误,错误日志说
"无法导入设置'WRONG_PROJECT.settings'(是否在sys.path上?):没有模块名称WRONG_PROJECT.settings,请参阅:CORRECT_PROJECT/URL"
也就是说,通过加载CORRECT_PROJECT,有时系统(WSGI?Apache?Django?)会尝试从WRONG_PROJECT加载设置.
通过积极地点击刷新,错误消失.可能有什么不对?我怎么调试?
CORRECT_PROJECT在deamon模式下使用WSGI.
使用deamon模式:http://modwsgi.readthedocs.org/en/latest/configuration-directives/WSGIDaemonProcess.html
看起来mod_rewrite正在弄乱mod_wsgi的env变量(scumbag吃SCRIPT_NAME或其他东西).
只添加以下行:
RewriteEngine On
Run Code Online (Sandbox Code Playgroud)
到我的httpd.conf导致我的基于Django的网站出现问题.我的别名看起来像这样:
WSGIScriptAlias /prefix /path/to/my/wsgi.py
Run Code Online (Sandbox Code Playgroud)
现在两个网址:
example.com/prefix和
example.com/prefix/
工作(有点......网站显示),但在前一种情况下(没有斜杠),所有网址都是由django错误生成的,例如:
example.com/some_url 代替
example.com/prefix/some_url
如果我注释掉#RewriteEngine On问题就消失了,但我需要mod_rewrite.我怎样才能解决这个问题?
提前致谢.
我的django项目出现403错误.
我在错误日志中得到的唯一一行是:
AH01630: client denied by server configuration: /srv/http/www/src/myproject/preprod_wsgi.py
Run Code Online (Sandbox Code Playgroud)
该文件的权限是:
-rwxr-xr-x 1 root root 552 Jul 30 04:24 preprod_wsgi.py
Run Code Online (Sandbox Code Playgroud)
而apache(VERSION:2.4)conf文件包含(除其他外):
LoadModule wsgi_module modules/mod_wsgi.so
<IfModule unixd_module>
User http
Group http
</IfModule>
<Directory />
AllowOverride none
Require all denied
</Directory>
#
# Others
#
Alias /robots.txt /srv/http/www/htdocs/static/robots.txt
Alias /favicon.ico /srv/http/www/htdocs/static/favicon.ico
Alias /media/ /srv/http/www/htdocs/media/
Alias /static/ /srv/http/www/htdocs/static/
<Directory "/srv/http/www/htdocs/static">
Require all granted
</Directory>
<Directory "/srv/http/www/htdocs/media">
Require all granted
</Directory>
<Files "/srv/http/www/src/myproject/preprod_wsgi.py">
Require all granted
</Files>
#
# WSGI
#
WSGIDaemonProcess myproject …Run Code Online (Sandbox Code Playgroud) 这是回溯:
mod_wsgi: Target WSGI script '/[..]/project/wsgi.py' cannot be loaded as Python module.
mod_wsgi: Exception occurred processing WSGI script '/[..]/project/wsgi.py'.
Traceback (most recent call last):
File "/home/ubuntu/api/api/wsgi.py", line 11, in <module>
import uuid as uuid
File "/home/ubuntu/.virtualenvs/api/lib/python3.4/site-packages/uuid.py", line 138
if not 0 <= time_low < 1<<32L:
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
不知道问题出在哪里... uuid.py lib有错误吗?
mod-wsgi ×10
django ×7
python ×6
apache ×3
apache2 ×1
apt ×1
cgi ×1
dotcloud ×1
mod-rewrite ×1
nginx ×1
performance ×1
postgresql ×1
virtualenv ×1
windows-xp ×1
wsgi ×1
xampp ×1