关于python:让Django走向绿色

Making Django go green

我有一个Django管理命令,可以执行数千个TCP / UDP请求。我已经使用Gevent加快了速度,因为我将代码重组为协程。套接字连接不再阻塞,但是据我所读,Django的某些部分仍然不是绿色的。 (以绿色表示,我的意思是使用绿色。)

您能告诉我Django的哪些部分不是绿色的,我可以做些什么来使其绿色?我认为仍有一些与DB相关的部分仍然受阻。是否有Django的任何库/补丁程序可以帮助我使其变得绿色?

我不太担心请求/响应周期是否为绿色,因此,Gunicorn会帮助我吗?

谢谢


gevent猴子修补程序将修补标准库以使其对Greenlet友好。这应该需要很多常见的Django调用。

1
from gevent import monkey; monkey.patch_all()

对于数据库,通常接口处于阻塞状态。如果使用PostgreSQL,请查看psyco_gevent猴子补丁psycopg2与gevent合作。


只要使用C扩展名或正在使用C扩展名的其他第三方库,

gevent不会使第三方库变绿。如果使用标准库,则gevent可以对其进行猴子补丁。

某些数据库驱动程序当然依赖于数据库实现本身。仅仅因为您使用绿色的库并不意味着您的数据库将表现为"绿色"。这也需要在数据库级别本身上调用。例如,从2.2版开始,Prosgresql就支持异步命令处理。

另外,您可能想使用gevent检查项目。

Gunicorn将使您的生活更轻松,至少在您开始部署应用程序时。同样在开发过程中,我会建议在普通的django runserver命令上使用gunicorn(带有gevent),这仅仅是因为它可以更快地处理并发请求。