2023-08-17 14:54:50 10阅读
前段时间分享了一篇如何提高django的并发能力的文章,由此引发了我对gunicorn的进一步研究,利用业余的时间看了一下gunicorn关于worker那部分的主要代码,下边以gevent为例子聊一聊它的工作流程(好吧目前主要看了看gevent这块儿的代码)。
如果对部分细节有兴趣的话可以继续看一下,当然默认你已经找到了gunicorn的代码位置,一般在Python(安装路径)/lib/python3.x/site-packages/gunicorn
1 |
def run(self): |
上边提到的self.manage_workers()先会调用spawn_worker函数,部分代码如下
1 |
worker.pid = os.getpid() |
ggevent.py的run函数
1 |
# 为什么看ggevent,可以看一下works/__init__.py文件 |
虽然没有看其他的工作方式流程,但大概应该差不多都是最前的三步过程,可能会有一些函数的不同,其实去看gunicorn的源码无非就是想了解其工作流程,前边的文章如何提高django的并发能力,遇到了当采用gevent方法启动时会导致数据库连接不能复用,后边会继续研究,希望能找到具体的原因。
2023-08-17 14:54:50 10阅读
前段时间分享了一篇如何提高django的并发能力的文章,由此引发了我对gunicorn的进一步研究,利用业余的时间看了一下gunicorn关于worker那部分的主要代码,下边以gevent为例子聊一聊它的工作流程(好吧目前主要看了看gevent这块儿的代码)。
如果对部分细节有兴趣的话可以继续看一下,当然默认你已经找到了gunicorn的代码位置,一般在Python(安装路径)/lib/python3.x/site-packages/gunicorn
1 |
def run(self): |
上边提到的self.manage_workers()先会调用spawn_worker函数,部分代码如下
1 |
worker.pid = os.getpid() |
ggevent.py的run函数
1 |
# 为什么看ggevent,可以看一下works/__init__.py文件 |
虽然没有看其他的工作方式流程,但大概应该差不多都是最前的三步过程,可能会有一些函数的不同,其实去看gunicorn的源码无非就是想了解其工作流程,前边的文章如何提高django的并发能力,遇到了当采用gevent方法启动时会导致数据库连接不能复用,后边会继续研究,希望能找到具体的原因。