Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django网站性能下降_Python_Django_Performance_Wsgi_Gunicorn - Fatal编程技术网

Python Django网站性能下降

Python Django网站性能下降,python,django,performance,wsgi,gunicorn,Python,Django,Performance,Wsgi,Gunicorn,好吧,我想解释一下我的django小问题,我在四处走动时遇到了麻烦 问题 我有一个小网站,只有几个页面显示数据库记录列表。该网站是我公司的内部渲染场监视器,在任何时候都可能有十几个或两个活动连接。不超过50 问题是,我有三个更新服务,它们在打开时会导致真正的性能下降 每个更新服务都是python脚本,它们: 使用urllib2向url发出http请求 等待回应 将带有时间戳的成功消息打印到日志中 等待10秒钟,然后重新开始 他们发送请求以使my django网站轮询外部服务并将新数据读入djan

好吧,我想解释一下我的django小问题,我在四处走动时遇到了麻烦

问题

我有一个小网站,只有几个页面显示数据库记录列表。该网站是我公司的内部渲染场监视器,在任何时候都可能有十几个或两个活动连接。不超过50

问题是,我有三个更新服务,它们在打开时会导致真正的性能下降

每个更新服务都是python脚本,它们:

  • 使用urllib2向url发出http请求
  • 等待回应
  • 将带有时间戳的成功消息打印到日志中
  • 等待10秒钟,然后重新开始
  • 他们发送请求以使my django网站轮询外部服务并将新数据读入django数据库的URL。URL如下所示:

    • (每次更新大约需要5-15秒)
    • (每次更新大约需要25-45秒)
    • (每次更新大约需要5-15秒)
    当这些更新服务打开时(尤其是updateTasks),甚至正常用户开始加载都需要10秒以上的时间

    设置

    Django 1.8,与Gunicron v18一起部署

    主gunicorn服务使用这些参数运行(分成一个列表以便于阅读)

    
    -b本地主机:80001
    -u农民
    -t 600
    -g
    --最多请求10000个
    -n bb_网络网格
    -w 17
    -p/var/run/gunicorn\u bb\u webgrid.pid
    -D
    --日志文件/xfs/GridEngine/bbgrid\u log/bb\u webgrid.log
    wsgi:应用程序
    
    此站点的Apache配置:

    <VirtualHost *:80>
        ServerName webgrid.<INTERAL_COMPANY_URL>
        ServerAlias webgrid
    
        SetEnv force-proxy-request-1.0 1
    
        DocumentRoot /xfs/GridEngine/bb_webgrid/www
        CustomLog logs/webgrid_access.log combined
        ErrorLog logs/webgrid_error.log
        #LogLevel       warn
        <Directory "/xfs/GridEngine/bb_webgrid/www">
                AllowOverride All
        </Directory>
    
        WSGIDaemonProcess webgrid processes=17 threads=17
        WSGIProcessGroup webgrid
    
    </VirtualHost>
    
    
    服务器名webgrid。
    ServerAlias webgrid
    SetEnv force-proxy-request-1.0 1
    DocumentRoot/xfs/GridEngine/bb_webgrid/www
    CustomLog日志/webgrid\u access.log组合
    ErrorLog日志/webgrid\u error.log
    #日志级别警告
    允许超越所有
    WSGIDaemonProcess webgrid进程=17个线程=17
    WSGIProcessGroup webgrid
    
    这种事情不应该在网上做;通过点击一个指向某个视图的URL,您就不必要地捆绑了您的Web服务器,这会阻止它完成其真正的工作,即响应用户请求

    相反,请在带外执行此操作。一个真正快速简单的方法是写一个;这样,您就可以轻松地从命令行脚本调用模型方法。现在,您可以简单地将您的cron作业或其他任务指向调用这些命令,而不是调用单独的Python脚本来调用站点上的URL


    另一种选择是使用芹菜;对于执行长时间运行的异步任务来说,这是一个非常好的系统。它甚至有自己的调度系统,因此您可以完全替换cron作业。

    这种事情不应该在线完成;通过点击一个指向某个视图的URL,您就不必要地捆绑了您的Web服务器,这会阻止它完成其真正的工作,即响应用户请求

    相反,请在带外执行此操作。一个真正快速简单的方法是写一个;这样,您就可以轻松地从命令行脚本调用模型方法。现在,您可以简单地将您的cron作业或其他任务指向调用这些命令,而不是调用单独的Python脚本来调用站点上的URL


    另一种选择是使用芹菜;对于执行长时间运行的异步任务来说,这是一个非常好的系统。它甚至有自己的调度系统,因此您可以完全替换cron作业。

    不太清楚您在这里说的是什么。你的Django应用程序中有一些东西(什么?)碰到了一个URL,而这个URL又会联系到一个外部服务——是吗?不太清楚你在这里说的是什么。你的Django应用程序中有一些东西(什么?)碰到了一个URL,而这个URL又会联系到一个外部服务-是吗?谢谢,我现在就来研究实现这个。谢谢,我现在就来研究实现这个。
    <VirtualHost *:80>
        ServerName webgrid.<INTERAL_COMPANY_URL>
        ServerAlias webgrid
    
        SetEnv force-proxy-request-1.0 1
    
        DocumentRoot /xfs/GridEngine/bb_webgrid/www
        CustomLog logs/webgrid_access.log combined
        ErrorLog logs/webgrid_error.log
        #LogLevel       warn
        <Directory "/xfs/GridEngine/bb_webgrid/www">
                AllowOverride All
        </Directory>
    
        WSGIDaemonProcess webgrid processes=17 threads=17
        WSGIProcessGroup webgrid
    
    </VirtualHost>