标签: wsgi

scgi和wsgi有什么区别?

这两者有什么区别?哪个更好/更快/更可靠?

python wsgi scgi

16
推荐指数
3
解决办法
1万
查看次数

WSlI中的httplib CannotSendRequest错误

我和Django使用了两个不同的python oauth库来通过twitter进行身份验证.使用WSGI进行apache设置.当我重新启动服务器时,一切都运行良好大约10分钟,然后httplib似乎锁定(请参阅以下错误).

我只运行了1个进程和1个WSGI线程,但这似乎没有任何区别.

我无法弄清楚为什么它会锁定并给出这个CannotSendRequest错误.我花了很多时间来解决这个令人沮丧的问题.任何有关它的提示/建议将不胜感激.

File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 92, in get_response
  response = callback(request, *callback_args, **callback_kwargs)

File "mypath/auth/decorators.py", line 9, in decorated
  return f(*args, **kwargs)

File "mypath/auth/views.py", line 30, in login
  token = get_unauthorized_token()

File "/root/storm/eye/auth/utils.py", line 49, in get_unauthorized_token
  return oauth.OAuthToken.from_string(oauth_response(req))

File "mypath/auth/utils.py", line 41, in oauth_response
  connection().request(req.http_method, req.to_url())

File "/usr/lib/python2.5/httplib.py", line 866, in request
  self._send_request(method, url, body, headers)

File "/usr/lib/python2.5/httplib.py", line 883, in _send_request
  self.putrequest(method, url, **skips)

File "/usr/lib/python2.5/httplib.py", line 770, in putrequest
  raise CannotSendRequest()
Run Code Online (Sandbox Code Playgroud)

CannotSendRequest

python twitter wsgi oauth httplib

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

提供gunicorn的请求

尝试在Rackspace.com上设置服务器.

做了以下事情:

  • 已安装Centos 6.3
  • 安装了Python 2.7
  • 使用主页上的"快速入门"安装了gunicorn:gunicorn.org/

在快速入门中,似乎初始化了一个"hello world"应用程序:

创建文件" myapp.py ":

(tutorial) $ vi myapp.py
(tutorial) $ cat myapp.py

" myapp.py "的内容

def app(environ, start_response):
   data = "Hello, World!\n"
   start_response("200 OK", [
       ("Content-Type", "text/plain"),
       ("Content-Length", str(len(data)))
   ])
   return iter([data])
Run Code Online (Sandbox Code Playgroud)

由于我对服务器知之甚少,所以我不知道下一步该做什么.我尝试在浏览器中输入服务器的IP地址,但这似乎导致超时.

我不确定是否有:

  • 还需要安装其他东西.在gunicorn网站上的" 部署 " 下提到了Nginx .看起来像Nginx是一个令我困惑的代理服务器,因为我认为gunicorn是一个服务器.不知道为什么我需要两台服务器?
  • 需要在gunicorn中配置的东西
  • 需要在服务器上配置的东西
  • 为了实际提供请求而需要完成的其他事情

什么是下一个步骤?

非常感谢!

python linux wsgi centos gunicorn

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

寻找解释WSGI的图表

为了帮助我进一步理解WSGI,我正在寻找一个解释应用程序流程的图表,从webserver(例如apache)到大量中间件到"代码"(如print "hello world"位).

我已经从wsgi.org上阅读了关于WSGI的各种文章,但它仍然没有为我"点击",而且对于图表而言谷歌没有带来任何有用的东西,除了对django而言,虽然有趣,但期望用户理解如何中间件链接等.

既然"一张图片胜过千言万语",那么有没有比这更低/更简单的图表呢?

python diagram wsgi

15
推荐指数
3
解决办法
4357
查看次数

Apache mod_wsgi错误:禁止您无权访问此服务器上的/

我正在使用Ubuntu 10.04.
我在/home/wong2/Code/python/django2/named 下创建了一个django项目,atest
setting.wsgi在同一目录下创建了一个wsgi文件.
这里的内容是setting.wsgi:

import os 
import sys

path = '/home/wong2/Code/python/django2'

if path not in sys.path:
    sys.path.append(path)
os.environ["DJANGO_SETTINGS_MODULE"] = "atest.settings" 
from django.core.handlers.wsgi import WSGIHandler 
application = WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

这是我添加到我的httpd.conf中的内容:

<VirtualHost *:80>
    ServerName localhost
    WSGIScriptAlias / /home/wong2/Code/python/django2/setting.wsgi
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow  
        Allow from all 
    </Directory>
    <Directory "/home/wong2/Code/python/django2/atest">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

问题是,当我访问http:// localhost时,它说

被禁止

您无权访问此服务器上的/.

非常感谢.

python apache django mod-wsgi wsgi

15
推荐指数
3
解决办法
5万
查看次数

哪些Web框架支持Python3(PEP3333 - 符合WSGI 1.0.1)

我最近开始学习Python,在所有的研究中,我认为从Python3开始是好的(这就是Guido在Google IO'11上所建议的).但主要(网络)框架缺乏对Python3的支持确实让我感到烦恼.我知道同样的问题已经在整个互联网甚至StackOverflow上被问过,但是因为我们现在有了最终的PEP3333(WSGI 1.0.1),它们是支持/支持Py3的框架.我能找到的唯一一个是CherryPy3.2.0,正如项目页面所说,它符合PEP 3333标准.我特别想了解Django/Turbogears/Pylons/Flask(任何路线图都会提供丰富的信息).

python wsgi web-frameworks python-3.x

15
推荐指数
1
解决办法
2882
查看次数

在python应用程序中组合websockets和WSGI

我正在进行一项科学实验,大约有二十多名测试人员互相打/回合比赛.现在,它是一个带有WSGI接口的Python Web应用程序.我想用websockets增强可用性:当所有玩家完成转弯时,我想通知所有客户更新他们的状态.现在,每个人都必须等待转弯超时,或者不断重新加载并等待"转弯仍然在进行中"错误消息不再出现(忙于等待,有效).

我阅读了多个websocket库的文档,我理解了websockets如何工作,但我不确定混合WSGI和websockets的体系结构:我可以在同一个进程中拥有一个websockets和一个WSGI服务器(如果有的话,如何,使用任何websockets库)只需my_websocket.send_message()从WSGI处理程序调用,或者我应该有一个单独的websockets服务器并做一些IPC?或者我不应该混合它们?

编辑,6个月后:我最终启动了一个单独的websockets服务器进程(使用Autobahn),而不是将其与WSGI服务器集成.原因是分离它们中的两个更容易和更清洁,并且从WSGI进程(服务器到服务器通信)与websockets服务器交谈是直接的,并且在使用websocket-client的第一次尝试时工作.

python wsgi websocket

15
推荐指数
1
解决办法
9754
查看次数

为什么不是golang WSGI实现

我们在Python中有并发问题.这些WSGI服务器无法正常工作.我环顾四周,没有像Golang写的WSGI服务器及其goroutines.

有什么原因?

wsgi go

15
推荐指数
1
解决办法
5090
查看次数

在Django安装程序中无法解决mod_wsgi异常

我正在与我的托管服务提供商合作以启动和运行Django应用程序,但我们都没有经验丰富,我们基本上完全走到了尽头.

我没有直接访问conf文件,但是这里的内容是如何描述给我的:

<IfModule mod_wsgi.c>
WSGIScriptAlias /fredapp/ /home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi
WSGIDaemonProcess fred threads=15 display-name=%{GROUP} python-path=/home/fred/public_html/cgi-bin/fredapp/apache/
WSGIProcessGroup fred
WSGIApplicationGroup %{GLOBAL}
</IfModule>

Alias /robots.txt /home/fred/public_html/fred-site/robots.txt
Alias /favicon.ico /home/fred/public_html/fred-site/favicon.ico

Alias /settings/media/ /home/fred/public_html/fred-site/media/
Run Code Online (Sandbox Code Playgroud)

我的"django.wsgi"脚本没什么特别的:

import os, sys
sys.path.append('/home/fred/public_html/cgi-bin/')
sys.path.append('/home/fred/public_html/cgi-bin/fredapp/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'fredapp.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

所以我的理解是,所有这一切都意味着如果有一个请求进入domain.com/fredapp/,它应该通过django.wsgi转交给应用程序.但是,我得到的唯一回应是:

[Fri Jan 22 18:46:08 2010] [error] [client xx.xxx.xx.xx] File does not exist: /home/fred/public_html/domain.com/500.shtml
[Fri Jan 22 18:46:08 2010] [error] [client xx.xxx.xx.xx] mod_wsgi (pid=26760): Exception occurred processing WSGI script '/home/fred/public_html/cgi-bin/fredapp/apache/django.wsgi'.
[Fri Jan 22 18:46:03 2010] [error] [client xx.xxx.xx.xx] File does …
Run Code Online (Sandbox Code Playgroud)

python apache django wsgi

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

在Gunicorn/Flask应用程序中的进程之间共享静态全局数据

我有一个在Gunicorn下运行的Flask应用程序,使用同步工作器类型和20个工作进程.该应用程序在启动时读取大量数据,这需要时间并使用内存.更糟糕的是,每个进程加载自己的副本,这会导致它花费更长的时间并占用20倍的内存.数据是静态的,不会改变.我想加载一次,让所有20名员工分享它.

如果我使用该preload_app设置,它只在一个线程中加载,并且最初只需要1X内存,但是一旦请求开始进入,它似乎会变成20X.我需要快速随机访问数据,所以我宁愿不做IPC.

有没有办法在Gunicorn流程之间共享静态数据?

python wsgi multiprocessing flask gunicorn

14
推荐指数
1
解决办法
6316
查看次数