标签: mod-wsgi

socket和websocket之间的区别?

我正在构建需要使用套接字连接与另一个应用程序通信的Web应用程序.这对我来说是一个新领域,所以要确保套接字不同于websockets.看起来它们只是在概念上相似.

问起因为我最初计划使用Django作为我的项目的基础,但是在上面链接的SO帖子中,很明显webocket是不可能的(或者至少不可靠,即使像django-websockets这样的东西也是如此)使用首选的Django设置(Apache与mod_wsgi).然而,我发现其他帖子随便导入Python的套接字模块,就像获取服务器的主机名一样简单.

所以:

  • 他们真的不一样吗?
  • 是否有任何理由不将Django用于依赖于与外部服务器建立套接字连接的项目?

sockets mod-wsgi websocket

146
推荐指数
6
解决办法
9万
查看次数

Flask中的静态文件 - robot.txt,sitemap.xml(mod_wsgi)

是否有任何聪明的解决方案可以在Flask的应用程序根目录中存储静态文件.robots.txt和sitemap.xml应该在/中找到,所以我的想法是为它们创建路由:

@app.route('/sitemap.xml', methods=['GET'])
def sitemap():
  response = make_response(open('sitemap.xml').read())
  response.headers["Content-type"] = "text/plain"
  return response
Run Code Online (Sandbox Code Playgroud)

必须有更方便的东西:)

python static mod-wsgi robots.txt flask

91
推荐指数
7
解决办法
4万
查看次数

Django停止使用RuntimeError:populate()不可重入

我一直在使用WSGI开发部署在Apache服务器上的Django Web应用程序,一切都进展顺利.今天,我对我的应用程序进行了一些小的更改,admin.py试图自定义内置的Django Admin界面,并且最初产生了语法错误(一个未闭合的括号).这意味着当我触摸wsgi.py并加载代码时(我在我的虚拟主机上以守护进程模式运行WSGI),我的网站被替换为内部服务器错误,因为WSGI在遇到语法错误时停止了.

所以我修复了语法错误,检查了我没有更多manage.py check,并触及wsgi.py重新部署.但我的网站仍然显示内部服务器错误!检查Apache日志,这是我看到的:

[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
  application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/ …
Run Code Online (Sandbox Code Playgroud)

apache django mod-wsgi django-wsgi

88
推荐指数
5
解决办法
7万
查看次数

"make_sock:无法绑定到地址[::]:443"重启apache时(安装trac和mod_wsgi)

我正在尝试通过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>
Run Code Online (Sandbox Code Playgroud)

我重新启动apache只是为了得到这个错误:

* Restarting web server apache2                                                    

(98)Address already in use: make_sock: could not bind to address [::]:443

                                                                     [ OK ]
Run Code Online (Sandbox Code Playgroud)

这些都没有表现出来.

 netstat -anp | grep 443 
 fuser 443/tcp
Run Code Online (Sandbox Code Playgroud)

除了我运行的grep命令之外,这样做没有产生任何结果:

ps -aux | grep httpd
Run Code Online (Sandbox Code Playgroud)

当没有任何东西出现时,为什么说其他东西正在使用该端口?

编辑:你们会笑这个.我在ports.conf中有一个额外的Listen 443,不应该在那里.删除解决了这个问题.

apache ubuntu trac mod-wsgi

85
推荐指数
3
解决办法
12万
查看次数

Python:如果原始电子邮件没有"Body"标记或任何内容,如何从原始电子邮件解析Body

这似乎很容易

From
To
Subject
Run Code Online (Sandbox Code Playgroud)

等等

import email
b = email.message_from_string(a)
bbb = b['from']
ccc = b['to']
Run Code Online (Sandbox Code Playgroud)

假设这"a"是原始电子邮件字符串,看起来像这样.

a = """From root@a1.local.tld Thu Jul 25 19:28:59 2013
Received: from a1.local.tld (localhost [127.0.0.1])
    by a1.local.tld (8.14.4/8.14.4) with ESMTP id r6Q2SxeQ003866
    for <ooo@a1.local.tld>; Thu, 25 Jul 2013 19:28:59 -0700
Received: (from root@localhost)
    by a1.local.tld (8.14.4/8.14.4/Submit) id r6Q2Sxbh003865;
    Thu, 25 Jul 2013 19:28:59 -0700
From: root@a1.local.tld
Subject: oooooooooooooooo
To: ooo@a1.local.tld
Cc: 
X-Originating-IP: 192.168.15.127
X-Mailer: Webmin 1.420
Message-Id: <1374805739.3861@a1>
Date: Thu, 25 Jul …
Run Code Online (Sandbox Code Playgroud)

python email mod-wsgi wsgi python-2.7

68
推荐指数
4
解决办法
10万
查看次数

在制作中,Apache + mod_wsgi还是Nginx + mod_wsgi?

什么用于中型到大型的Python WSGI应用程序,Apache + mod_wsgi或Nginx + mod_wsgi?

哪种组合需要更多内存和CPU时间?
哪一个更快?
哪个比另一个更稳定?

我也在考虑使用CherryPy的WSGI服务器,但我听说它不适合非常高负载的应用程序,你对此有何了解?

注意:我没有使用任何Python Web Framework,我只是从头开始编写整个内容.
注意':也欢迎其他建议.

python apache mod-wsgi nginx

62
推荐指数
4
解决办法
3万
查看次数

调试Apache/Django/WSGI错误请求(400)错误

我的简单Django应用程序在调试模式下工作正常(manage.py runserver),并且在我的开发箱上的WSGI + Apache下工作,但当我推送到EC2时,我开始接收Bad Request (400)任何URL的间歇性(10-80%的时间)错误我试图查看(无论是在我的应用程序中还是在Django管理员中.

我在哪里可以找到关于此的调试信息?没有任何东西出现/var/log/apache2/error.log,即使有LogLevel=info.我检查了版本,记录了Request环境(参见ModWSGI Debugging Tips),看不出有什么重大差异.

剩下的一个想法是,我正在使用Ubuntu 12.04(libapache2-mod-wsgi 3.3-4build1)的mod_wsgi,它是针对Python 2.7.1构建的; 我有Python 2.7.3.Django是1.6,比Ubuntu Precise版本更新.我不愿意从源代码开始构建软件包,因为它很难清理,这看起来像是次要的版本更改......

谢谢您的帮助.

(供参考,这里是Apache配置和WSGI应用程序)

Apache配置(000默认)

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi
    ...
Run Code Online (Sandbox Code Playgroud)

rz.WSGI app

import os
import sys
import django.core.handlers.wsgi
import pprint

path = '/usr/local/share/rz'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'rz.settings'

class LoggingMiddleware:
    def __init__(self, application):
        self.__application = application

    def __call__(self, environ, start_response):
        errors = environ['wsgi.errors']
        pprint.pprint(('REQUEST', environ), stream=errors) …
Run Code Online (Sandbox Code Playgroud)

python apache django mod-wsgi django-wsgi

61
推荐指数
2
解决办法
3万
查看次数

使用apache和mod_wsgi的多个django站点

我想举办它使用Debian的5同一服务器下的几个场所,说我有site1,site2site3,并承担我的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/
Run Code Online (Sandbox Code Playgroud)

这是我的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 Indexes FollowSymLinks
        AllowOverride None
        Order Deny,Allow
        Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这是我的wsgi配置site1,在/opt/django/site1/apache/django.wsgi:

import os, sys
import django.core.handlers.wsgi

sys.path.append('/opt/django') …
Run Code Online (Sandbox Code Playgroud)

python django hosting mod-wsgi apache2

57
推荐指数
1
解决办法
5万
查看次数

Django持久数据库连接

我正在使用django和apache以及mod_wsgi和PostgreSQL(都在同一主机上),我需要处理很多简单的动态页面请求(每秒数百个).我遇到的问题是瓶颈是django没有持久的数据库连接并且在每个请求上重新连接(需要接近5ms).在进行基准测试时,我得到了持久连接,我可以处理接近500 r/s而没有我只得到50 r/s.

有人有什么建议吗?如何修改django以使用持久连接?或者加速从python到DB的连接

提前致谢.

python database django mod-wsgi persistent

54
推荐指数
4
解决办法
3万
查看次数

目标WSGI脚本无法作为Python模块加载

我正在尝试使用apache部署mod_wsgi来运行django应用程序但是我收到错误500内部服务器错误apache日志显示:

[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] mod_wsgi (pid=16142): Exception occurred processing WSGI script '/home/user/bms/apache/django.wsgi'.
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] Traceback (most recent call last):
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]   File "/home/user/bms/apache/django.wsgi", line 13, in <module>
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]     import django.core.handlers.wsgi
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] ImportError: No module named django.core.handlers.wsgi
Run Code Online (Sandbox Code Playgroud)

我的apache虚拟主机如下:

<VirtualHost *:80>

    DocumentRoot /home/user/bms

    <Directory /home/user/bms>
        Order allow,deny
        Allow from all
    </Directory> …
Run Code Online (Sandbox Code Playgroud)

python apache django mod-wsgi wsgi

48
推荐指数
5
解决办法
11万
查看次数