Django网站性能放缓

2024-05-14 11:01:34 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我想解释一下我的django小问题,我在周围有麻烦。你知道吗

问题

我有一个小网站,只有几个页面显示数据库记录列表。该网站是一个内部渲染场为我的公司,这将可能有一打或两个活跃的连接在任何时候监测。不超过50。你知道吗

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

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

  1. 使用urllib2向url发出http请求。你知道吗
  2. 等待回应
  3. 将带有时间戳的成功消息打印到日志中。你知道吗
  4. 等待10秒钟,然后重新开始。你知道吗

它们发送请求的url使我的django网站轮询外部服务并将新数据读入django数据库。URL如下所示:

当这些更新服务被打开时(尤其是updateTasks),它可能需要超过10秒http://webgrid/才能开始为普通用户加载。你知道吗

设置

Django 1.8,与Gunicron v18一起部署。你知道吗

gunicorn主服务是使用这些参数运行的(为了便于阅读,将其拆分为一个列表)。你知道吗

<PATH_TO_PYTHON>
<PATH_TO_GUNICORN> 
-b localhost:80001 
-u farmer 
-t 600 
-g <COMPANY_NAME> 
--max-requests 10000 
-n bb_webgrid 
-w 17 
-p /var/run/gunicorn_bb_webgrid.pid 
-D 
--log-file /xfs/GridEngine/bbgrid_log/bb_webgrid.log
bb_webgrid.wsgi:application

此站点的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>

Tags: pathdjangolog数据库httpurl列表网站
1条回答
网友
1楼 · 发布于 2024-05-14 11:01:34

这种事情不应该在网上进行;通过点击一个指向某个视图的URL,你就不必要地占用了你的web服务器,从而阻止它完成真正的工作,也就是响应用户的请求。你知道吗

相反,在带外做这个。一种非常快速简单的方法是编写一个Django management command;这样您就可以很容易地从命令行脚本调用模型方法。现在您可以简单地将cron作业或其他任何作业指向调用这些命令,而不是调用单独的Python脚本来调用站点上的URL。你知道吗

另一种方法是使用芹菜;它是一个非常好的系统,可以执行长时间运行的异步任务。它甚至有自己的调度系统,所以您可以完全替换cron作业。你知道吗

相关问题 更多 >

    热门问题