gpt4 book ai didi

python - django 很慢

转载 作者:太空狗 更新时间:2023-10-30 00:12:10 33 4
gpt4 key购买 nike

一些分析显示模板渲染是罪魁祸首。 (我正在尝试仅包含缓存查询的页面。)但是,模板仍然非常简单。最复杂的部分是一个运行 10 次的嵌套循环,但如果一切顺利,嵌套循环不会运行,因为它被缓存了。 (就像在我的测试中一样)

也就是

{% for p in posts %}
--{{p.by.username}}
--{{p.text}}
{% cache 600 p p.timestamp %}
{% for img in p.images.all %}
--{{img.path}}
{% endfor %}
{% endcache %}
{% endfor %}

我在开发中得到约 80 个请求/秒。此页面的服务器。(我发现我可以在生产部署中将该数字乘以 3)为了进行比较,对于一个仅包含短静态字符串的普通模板,我得到了 1000req/s。

这是一个已知问题吗?我该如何纠正/避免它?

最佳答案

在开发模式下,django 做了很多事情来简化开发(例如:代码重新加载;如果使用模板,则为每个请求呈现模板;...)。

在生产模式下,优先在django之前部署一个WSGI服务器。这样的 wsgi 可能是 gunicorn , uWSGI , ...

典型的生产网络服务器布局可能是:nginx -> gunicorn -> django

一个简单的对比(django官方教程代码,有一个非常简单的“Hello World!@time”模板):

{% block content %}
<p> Hello World! @ {{ now }}</p>
{% endblock %}

开发模式

直接用django运行

python manage.py runserver

运行 apache-ab 进行测试

ab -n1000 -c10 http://127.0.0.1:8000/polls/helloworld

Server Software:        WSGIServer/0.2 # django
Server Hostname: 127.0.0.1
Server Port: 8000

Document Path: /polls/helloworld
Document Length: 59 bytes

Concurrency Level: 10
Time taken for tests: 3.438 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 242000 bytes
HTML transferred: 59000 bytes
Requests per second: 290.87 [#/sec] (mean)
Time per request: 34.380 [ms] (mean)
Time per request: 3.438 [ms] (mean, across all concurrent requests)
Transfer rate: 68.74 [Kbytes/sec] received

生产模式

用 gunicorn 运行

../bin/gunicorn -w4 mysite.wsgi # with 4 workers

运行 apache-ab 进行测试

ab -n1000 -c10 http://127.0.0.1:8000/polls/helloworld

Server Software:        gunicorn/19.7.1  # gunicorn
Server Hostname: 127.0.0.1
Server Port: 8000

Document Path: /polls/helloworld
Document Length: 59 bytes

Concurrency Level: 10
Time taken for tests: 0.618 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 248000 bytes
HTML transferred: 59000 bytes
Requests per second: 1619.10 [#/sec] (mean)
Time per request: 6.176 [ms] (mean)
Time per request: 0.618 [ms] (mean, across all concurrent requests)
Transfer rate: 392.13 [Kbytes/sec] received

关于python - django 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113749/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com