Articles of wsgi

如何configurationnginx将用户信息传递给wsgi / flask

我有一个nginx http服务器,它对用户进行身份validation,并通过wsgi将已validation的请求传递给Flask应用程序。 当我从烧瓶应用程序打印整个标题时,没有用户信息可用。 是否有可能让nginx在请求头中包含用户名? 这里是身份validationconfiguration的服务器块… server { listen 80; server_name notes.example.org; return 301 https://$server_name$request_uri; } server { # SSL configuration listen 443; listen [::]:443; include snippets/ssl-example.org.conf; include snippets/ssl-params.conf; server_name notes.example.org; location / { auth_basic "Restricted Content"; auth_basic_user_file /path/to/passwd/file; include uwsgi_params; uwsgi_pass unix:/path/to/wsgi/socket; } } 在wsgi下运行的应用程序显示的请求标题… Authorization: Basic **************== Content-Length: 0 User-Agent: Mozilla/5.0 (X11; Linux x86_64) […]

HA部署为Python wsgi应用程序

我考虑部署高可用性Python Web应用程序的情况: 负载均衡器 – * wsgi服务器 负载均衡器 – *生产HTTP服务器 – wsgi服务器 生产HTTP服务器(具有负载平衡function,如Nginx) – * wsgi服务器 对于负载平衡器,我考虑HAProxy 对于生产HTTP服务器,我考虑Nginx 对于wsgi服务器,我的意思是直接处理wsgi应用程序(gevent,女服务员,uwsgi …) – *表示一对多连接 – 意味着一对一的连接 没有静态内容可供使用。 所以我想知道是否需要生产HTTP服务器。 每个解决scheme的优缺点是什么? 对于每个场景(1-3),取代wsgi服务器是否有使用wsgi容器服务器(uWSGI,gunicorn),而不是原始的wsgi服务器(gevent,龙卷风)的优势? 我也想知道哪个解决scheme最适合websockets或长时间轮询请求?

如何在Python / Flask应用程序中使用WSGI – HasGeek最终用户?

我正尝试在我的机器上安装最终用户OAuth服务器。 所以我打算用SSL(在443上)和lastuser app作为WSGI服务器设置Nginx。 HasGeek最后用户 我已经使用Nginx设置了HTTPS / SSL,并且在我的机器上工作正常。 但WSGI服务器不工作。 最后用户基本上是一个带有WSGI脚本website.wsgi的Flask应用程序。 import sys import os.path sys.path.insert(0, os.path.dirname(__file__)) from lastuserapp import app as application, init_for init_for('production') 我尝试使用gunicorn WSGI,并得到错误ImportError: No module named wsgi ,如下所示: $ gunicorn -b localhost:7000 website.wsgi 2014-03-03 17:06:49 [31267] [INFO] Starting gunicorn 0.13.4 2014-03-03 17:06:49 [31267] [INFO] Listening at: http://127.0.0.1:7000 (31267) 2014-03-03 17:06:49 [31267] [INFO] Using […]

nginx与mod_wsgi

我通常使用FastCGI在nginx后面运行web应用程序。 我想试试mod_wsgi,但是看起来很过时。 作者提到它在0.5.34版本上工作,但是现在我正在运行0.7.62。 这篇wiki文章警告nginx模块和更高版本的编译问题。 有没有人用mod_wsgi更新版本的nginx? 我还有另外一个模块吗?

客户端连接ID从nginx传递给uwsgi

我正在使用以下设置: 客户端 – > Nginx – > uWSGI – > Python应用程序 客户端和Nginx之间的连接是持久的。 我知道,不支持Nginx和uWSGI之间的持续连接。 有没有办法将Nginx的连接ID传递给uWSGI,这样我就可以区分客户端了吗? 我试图区分具有以下限制的客户端:客户端不支持Cookie,我不能修改客户端代码。 客户端发送一些JSON到相同的URL,所以修改URL不适用于这里。

uWSGI罕见的网关超时

大家好! 我们有一个简单的Web应用程序(REST服务),使用良好的旧web.py编写并托pipe在Nginx + uWSGI上。 问题是,一旦有一个请求失败,“504网关超时”失败,完全相同的处理程序,除了在空数据库(SQLAlchemy + PostgreSQL)上执行简单的SQL SELECT查询,这意味着查询不会返回任何内容。 这里是uWSGIconfiguration: uwsgi: enable-threads: 1 threads: 1 workers: 2 master: 1 socket: :8001 plugin: python chown-socket: nginx:nginx pythonpath: /usr/lib/python2.6/site-packages/nailgun touch-reload: /var/lib/nailgun-uwsgi virtualenv: /usr module: nailgun.wsgi buffer-size: 49180 listen: 4096 pidfile: /tmp/nailgun.pid logto: /var/log/nailgun/app.log mule: 1 lazy: true shared-pyimport: /usr/lib/python2.6/site-packages/nailgun/utils/mule.py 这里是从Python应用程序日志中的行: GET /api/nodes/ => generated 2 bytes in 10199124 […]

多个django应用程序在一个wsgi服务器+ nginx中

我使用nginx + gunicorn在一台服务器上部署了多个django项目。 问题是我每次部署新的django项目时,运行gunicorn的新实例并configurationnginx。 基本上,如果我有3个项目,我至less有3×3 = 9炮相关的过程。 (1个gunicorn相关的工作人员,2个django相关的stream程,我有一个核心,所以我做了2个工人) 考虑到你有一个强大的服务器的情况,你想在这里主持大量的Django的应用程序像PHP托pipe服务提供商一样,但我想为每个Django应用程序运行3进程只是浪费资源。 有什么办法可以运行与10-20名工人gunicorn,但使用他们服务30-50 django应用程序?

请求主体未被读取时,ERR_INCOMPLETE_CHUNKED_ENCODING

以下是我对一个有趣的错误的讨论,尽pipe我已经解决了,但我不明白。 我find了一个解决scheme ,但是我真的希望有人能够提供一些洞察错误的真正原因。 问题的背景 这个问题首先出现在我们的Django应用程序的生产服务器上。 堆栈如下 AngularJS nginx的 uWSGI Django的 PostgreSQL的 我们的团队在Safari上发现了一个POST请求。 Safari会在响应中窒息并吐出一个ERR_INCOMPLETE_CHUNKED_ENCODING 。 这个post的要求如下: class ContractCloseOutSubmitView(APIView): def post(self, request, contract_id): contract = get_object_or_404( ContractCloseOut, pk=contract_id) if contract.submit(): return Response({"detail": "Closed successfully."}, status=200) else: raise ParseError("Could not submit.") 该请求是将对象标记为closures的简单请求。 我们在现场的许多地方使用这种模式,所以这个问题显然需要注意。 解 我们的第一个线索是请求确实closures了这个对象。 也就是说, if contract.submit()必须已经到达的话。 这将问题缩小到了答复。 我做了一些阅读,导致这个错误的原因有很多。 我们尝试了: 在Django中显式设置内容长度 一些黑客认为nginx可以更加可靠地判断内容的长度 用几种不同的方法重写代码 没有任何工作,问题仍然没有发生在本地。 所以我们决定在本地复制整个堆栈并进行testing。 一次一个,我们删除了networking层的元素,并确定删除nginx并直接与uWSGI交谈解决了这个问题。 所以现在我们确信问题在于nginx,但是还是没有办法解决。 […]

mod_wsgi和uwsgi有什么区别?

在Apache中似乎有mod_wsgi模块,而在Nginx中似乎有uwsgi模块。 而且似乎也有wsgi协议和uwsgi协议。 我有以下问题。 mod_wsgi和uwsgi只是不同的实现向Python web开发人员提供WSGIfunction吗? 有没有mod_wsgi的Nginx? uwsgi是否也向开发者提供了application(environ, start_response)入口点? 除了wsgi之外,uwsgi是否也是一个单独的协议? 在这种情况下,uwsgi协议与wsgi协议有什么不同?

如何处理Python工作人员长时间运行的请求?

我有一个Python(现在是PHP,但我们正在重写)函数,它需要一些参数(A和B)并计算一些结果(在图中find从A到B的最佳path,图是只读的),典型场景一个呼叫需要0.1s到0.9s来完成。 这个函数被用户作为一个简单的REST Web服务(GET bestpath.php?from = A&to = B)来访问。 目前的实现是非常愚蠢的 – 这是一个简单的PHP脚本+ Apache + mod_php + APC,每个请求需要加载所有的数据(在PHP数组超过12MB),创build所有结构,计算path和退出。 我想改变它。 我想要一个具有N个独立worker的设置(每个服务器有X个Y服务器),每个worker都是一个循环运行的python应用程序(获取请求 – >处理 – >发送回复 – >获取请求…),每个worker可以处理一次一个请求。 我需要一些作为前端的东西:获取用户的请求,pipe理请求的队列(可configuration的超时),并为我的工作人员提供一次请求。 如何处理这个? 你能提出一些设置吗? nginx + fcgi或wsgi或其他东西? HAProxy的? 正如你可以看到我是一个Python新手,反向代理等我只需要一个关于架构(和数据stream)的起点, 顺便说一句。 工作人员正在使用只读数据,因此无需保持locking和通信