小编t1m*_*1m0的帖子

在dotcloud上的gunicorn,nginx(v 1.3.14),django和gevent-socket.io

我试图在dotcloud上在nginx(v 1.3.14)后面部署gunicorn + gevent.我有几个问题.我的目标是改编python-on-dotcloud示例.到目前为止,我还没有能够使用此设置使用websockets部分.换句话说,我必须手动刷新页面以获取更新,而不是通过socket.io.这对我来说都很新鲜,所以它可能是一个总的noob错误.这是一个相关的问题.

以下是我对python-on-dotcloud示例所做的更改.

  1. 显然nginx(从版本1.3.13开始)支持Web套接字.我从python-on-dotcloud示例更新了构建器脚本以指向此开发版本:nginx_download_url="http://nginx.org/download/nginx-1.3.14.tar.gz"

  2. 我设置gunicorn绑定到unix套接字,然后从nginx.conf设置proxy_pass,将流量上行发送到gunicorn proxy_pass http://appserver;,我已经定义了appserver.

  3. 我正在使用gevent-socket.io运行一个django应用程序,在没有运行nginx的情况下工作正常.(我只是将gunicorn绑定到dotcloud.yml中的0.0.0.0:$PORT_WWW)

我的问题是这些.

  1. 我想解决一个没问题吗?

    一个.我已经做了相当多的阅读,建议将枪支放在nginx后面.在dotcloud的前线负载平衡器的背景下,这仍然是真的吗?

    湾 如果我不期望我会受到DoS攻击,那么将gunicorn置于nginx后面仍然很重要吗?

  2. 我试图设置是否可以通过unix套接字运行websockets?

  3. unix套接字是否会在dotcloud上打破缩放?

  4. 如果我需要使用端口,那么如何设置呢?我不认为我可以在同一个应用程序中分配两个http端口.如果我将它拆分为两个应用程序,那么我不确定如何将来自gunicorn应用程序的PORT_WWW环境变量传递到nginx应用程序,以便最终可用于nginx postinstall脚本,从而生成nginx.conf.

  5. 关于为什么这不起作用的任何想法?

我在下面包含了三个配置文件.让我知道其他人是否会有所帮助.谢谢!

dotcloud.yml

www:
    type: custom
    buildscript: python/builder
    systempackages:
        # needed for the Nginx rewrite module
        - libpcre3-dev
        # needed to support python versions 2.7, 3.1, 3.2.
        - python3-all
    ports:
        www: http
    processes:
        nginx: nginx
        app: /home/dotcloud/env/bin/gunicorn -c /home/dotcloud/gunicorn.conf -b unix:/tmp/gunicorn.sock wsgi:application
        #app: /home/dotcloud/env/bin/gunicorn -c /home/dotcloud/gunicorn.conf -b 0.0.0.0:$PORT_WWW wsgi:application
    config:
        # python_version can …
Run Code Online (Sandbox Code Playgroud)

django nginx gunicorn dotcloud gevent-socketio

13
推荐指数
1
解决办法
2347
查看次数

postgresql 与 django(和 gunicorn+gevent)的空闲连接

我的堆栈包括 django (1.4.3)、psycopg2 (0.0.3) 和 postgres (9.1)。此外,我正在使用 psycogreen.gevent.patch_psycopg,因为我正在使用 gunicorn 和 gevent 提供我的 django。

一切似乎都很愉快,但我得到了很多(约 40 个)打开的数据库连接。直到我在 django 数据库设置中将 'autocommit' 设置为 True 之前,它们都处于“事务空闲”状态。现在他们都只是“空闲”。

这是我的 pg_top 输出示例。

last pid: 22043;  load avg:  0.09,  0.05,  0.05;       up 6+21:49:58                                                    16:21:08
45 processes: 45 sleeping
CPU states:  3.0% user,  0.9% nice,  0.2% system, 96.0% idle,  0.0% iowait
Memory: 871M used, 130M free, 32M buffers, 530M cached
Swap: 10M used, 246M free, 2192K cached

  PID USERNAME PRI NICE  SIZE   RES STATE   TIME   WCPU    CPU COMMAND
10035 …
Run Code Online (Sandbox Code Playgroud)

django psycopg2 gevent gunicorn django-postgresql

6
推荐指数
0
解决办法
2283
查看次数