好吧,我想解释一下我的django小问题,我在周围有麻烦。你知道吗
问题
我有一个小网站,只有几个页面显示数据库记录列表。该网站是一个内部渲染场为我的公司,这将可能有一打或两个活跃的连接在任何时候监测。不超过50。你知道吗
问题是,我有三个更新服务,它们在打开时会导致真正的性能下降。你知道吗
每个更新服务都是python脚本:
它们发送请求的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>
这种事情不应该在网上进行;通过点击一个指向某个视图的URL,你就不必要地占用了你的web服务器,从而阻止它完成真正的工作,也就是响应用户的请求。你知道吗
相反,在带外做这个。一种非常快速简单的方法是编写一个Django management command;这样您就可以很容易地从命令行脚本调用模型方法。现在您可以简单地将cron作业或其他任何作业指向调用这些命令,而不是调用单独的Python脚本来调用站点上的URL。你知道吗
另一种方法是使用芹菜;它是一个非常好的系统,可以执行长时间运行的异步任务。它甚至有自己的调度系统,所以您可以完全替换cron作业。你知道吗
相关问题 更多 >
编程相关推荐