Articles of gunicorn

Django + Gunicorn + nginx的性能很差。 甚至无法获得8 qps

我使用nginx + gunicorn为django应用程序提供服务,并将其部署在EC2(m1.small实例)上。 我有这样的看法: def hi(request): return HttpResponse('hi', content_type='text/plain') 映射到url /hi/ 。 所以它基本上只是在[myurl]/hi返回[myurl]/hi 。 现在,当我从loader.io加载testing这个域( [myurl]/hi )时,这甚至不能通过250个客户端超过30秒的testing。 (每秒约8个请求) 这是我的nginx access.log文件(的一部分)。 它基本上只在200秒后给出499秒。 (loader.io中的超时设置为10秒) 我一定在做一些严重错误的事情。 我如何发现? 我使用yet-another-django-profiler ,接下来是输出: 我也在Elastic Beanstalk(它使用Apache服务器)上部署了这个django应用程序(m3.large instance),而且我也得到了糟糕的性能。 我现在的中间件是: MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', # 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', # 'silk.middleware.SilkyMiddleware', # 'yet_another_django_profiler.middleware.ProfilerMiddleware', # 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', # 'django.contrib.messages.middleware.MessageMiddleware', # 'django.middleware.clickjacking.XFrameOptionsMiddleware', # 'django.middleware.security.SecurityMiddleware', ) 此前没有任何评论。 […]

Gunicorn每秒钟都在创造工人

我在Nginx后面使用Gunicorn运行Django。 在我的一个安装过程中,当我运行gunicorn进程时,我不断得到debugging输出,就像每秒创build工作(我假设这是因为Django加载非常慢,并注意到消息“[20205] [DEBUG] 3工人”)。 你可以在这个要点检查详细的输出在类似的设置,我运行3更多的安装没有任何这样的问题和各自的网站几乎立即加载。 任何想法为什么发生这种情况? 谢谢。

Nginx Django和Gunicorn。 Gunicorn袜子文件丢失?

我有一个基于这个https://github.com/jcalazan/ansible-django-stack的可靠configuration虚拟机,但由于某种原因试图启动Gunicorn给出了以下错误: 无法连接到/path/to/my/gunicorn.sock 并在nginx日志文件中: 连接()到unix:/path/to/my/gunicorn.sock失败(2:没有这样的文件或目录),当连接到上游 实际上在指定的目录中缺less套接字文件。 我已经检查了目录的权限,他们很好。 这是我的gunicorn_start脚本: NAME="{{ application_name }}" DJANGODIR={{ application_path }} SOCKFILE={{ virtualenv_path }}/run/gunicorn.sock USER={{ gunicorn_user }} GROUP={{ gunicorn_group }} NUM_WORKERS={{ gunicorn_num_workers }} # Set this to 0 for unlimited requests. During development, you might want to # set this to 1 to automatically restart the process on each request (ie your # […]

如何以非root用户身份运行gunicorn / python应用程序服务器?

我正在部署一个django应用程序,在CentOS 5后面的nginx上使用gunicorn。我如何以非root用户身份运行gunicorn? 没有任何文件似乎解决这个问题。 这可能适用于在nginx后面运行的任何python应用程序服务器以及… 我应该补充一点,以下内容不起作用: sudo -u nobody gunicorn_django –workers=4 它失败: raise HaltServer(reason, self.WORKER_BOOT_ERROR) gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 回答: 我的错。 我有一个自定义的settings.py文件,所以应该引用gunicorn: sudo -u nobody gunicorn_django –workers=4 production_settings.py

上游Django / Gunicorn后端的NGINX反向代理

我发布在nginx的邮件列表上,但没有收到任何人的回复,所以我想我会给它在这里stackoverflow 🙂 我目前有一个在Amazon EC2上托pipe的Django应用程序。 我所有的数据都是通过端口8000上的Gunicorn服务器(一个用于UNIX的Python WSGI HTTP服务器,它是一个从Ruby的Unicorn项目移植过来的预分叉工作者模型)。 我不必担心将静态内容(图像)传递给客户端,因为所有这些都是由亚马逊的S3服务处理的。 Django通过json将内容的URL通过Gunicorn传递给客户端。 客户端可以下载它。 我的Django应用程序托pipe在一个t1.micro实例上。 以下是由Amazon Web Services提供的规格: 处理器:最多2个EC2计算单元(短周期突发)。 虚拟内核:1内存:615 MiB平台:32位和64位 在这个实例中,我有3个Gunicorn工作者与我的Django应用程序一起运行。 对于我的Nginx反向代理服务器,我也使用t1.micro实例。 我已经设置好了,一切正常。 这是我的etc / nginx / sites-enabled / defaultconfiguration如下: # Gunicorn server upstream django { server 10.0.10.0:8000; } # Serve static files and redirect any other request to Gunicorn server { listen 80; server_name 23.0.23.23/; #root /var/www/domain.com/; […]

什么是gunicorn.sock?

我是一个新手,遵循Michal Karzynski的gunicorn–django教程。 我在Ubuntu 14上使用Django 1.7.4,我的gunicorn脚本的设置如下 #!/bin/bash NAME="mytestapp" # Name of the application DJANGODIR=/var/www/testapp/src # Django project directory SOCKFILE=/var/www/testapp/run/gunicorn.sock # we will communicte using this unix socket USER=ubuntu # the user to run as GROUP=ubuntu # the group to run as NUM_WORKERS=3 # how many worker processes should Gunicorn spawn DJANGO_SETTINGS_MODULE=testapp.settings # which settings file should […]

Django能单独运行在Gunicorn上(没有Apache或者nginx)吗?

我已经在网上尝试了几乎所有的django + nginx教程,我无法获得一个图像文件显示在屏幕上。 这总是老的故事 – 404 PAGE NOT FOUND 。 网页加载正常,但我/静态/文件夹中的django.png没有。 不知道在settings.py或nginx中是否有问题。 我很沮丧,我拒绝看另一个“如何获得nginx / django教程”。 如果我在不久的将来部署一个网站,Gunicorn就足以运行一个Django站点,同时提供静态文件,而不使用Apache或nginx? 有一个逆向代理首先是一个很大的好处?

将在gunicorn上运行的Flask应用程序代理到nginx中的子path

我有一个Flask应用程序在http://127.0.0.1:4000上运行gunicorn: gunicorn -b 127.0.0.1:4000 webapp:app 现在我想使用nginx作为反向代理,并以http://127.0.0.1:4000的方式将http://myserver.com/webapp/subpath转发给每个http://myserver.com/webapp/subpath http://127.0.0.1:4000/subpath 。 代理/redirect在不使用子path时很好地工作: upstream app { server 127.0.0.1:4000 fail_timeout=0; } server { listen 80 default; client_max_body_size 4G; server_name _; location / { proxy_pass http://app; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } } 我怎么设置 location /webapp { #go to my gunicorn app, translate URLs nicely } Flask开发者的这个提示不起作用: […]

用django,nginx和gunicorn缺less自定义标题

免责声明: 我正在一个项目中存在一个“巨大的”web应用程序,有api的手机,所以改变api不是一个选项。 这个应用程序是很早以前开发的,有几个开发人员已经开始研究它, 话虽如此,问题在于此; 在这个网站的移动api(只是意见比返回json数据),代码正在寻找一个标记,但在请求的标题: token = request.META.get('HTTP_TOKEN') 当我在本地testing这个api时,工作正常,但是在生产中没有,所以我试图弄清楚发生了什么,并发现这一点: django转换头文件,甚至自定义头文件到request.META中的键。我使用urllib2和请求testingapi,生产中的问题是在生产服务器中请求.META永远不会有一个名为HTTP_TOKEN的键,所以,做一点点debugging我认真地认为这个问题是我们为django应用程序服务的方式。 我们使用的是django1.3,nginx,gunicorn,virtualenvwrapper,python2.7。 我的主要嫌疑人是nginx,我认为,在某种程度上,nginx收到的头,但不转发给django,我试图做一些研究,但我只发现nginx的安全头和自定义头信息,但我没有finddoc或者关于如何告诉nginx允许这个头文件而不删除它的东西。 我在这里需要帮助,第一件事就是testingnginx是否收到头文件,但是我只知道一点关于nginx的内容,我不知道如何告诉它logging请求的头文件。 谢谢 更新 nginx的conf文件

django-gunicorn-nginx:502坏的网关

我试图将我的Web应用程序发送到服务器,这是我第一次configuration服务器。 我正在使用django–gunicorn–nginx设置按照这个教程http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/首先,一切都很完美,我得到了Django的欢迎页面 。 然后,我在django项目中加载应用程序,并设置静态根,现在我得到502坏的网关你可以在http://qlimp.com 一切都取决于gunicorn和监督安装程序是相同的教程中显示。 但是我修改了一些nginx conf。 这里是: upstream app_server_djangoapp { server localhost:8001 fail_timeout=0; } server { listen 80; server_name qlimp.com; access_log /var/log/nginx/guni-access.log; error_log /var/log/nginx/guni-error.log info; keepalive_timeout 5; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://app_server_djangoapp; break; } } location /files/ { autoindex on; root /home/nirmal/qlimp/qlimp/files/; […]