摘要:一、源码解析 对python原生文件打补丁: import eventlet eventlet.monkey_patch() 跟踪进入该模块方法:eventlet.patcher#monkey_patch def monkey_patch(**on): ...... modules_to_patch
阅读全文
摘要:一、概述 wsgi服务启动并监听http请求的流程: 1.利用paste.deploy模块的loadapp函数加载指定服务(如proxy)的配置文件,获取到用户的application,即业务程序 2.调用wsgi.server,其中wsgi.server会绑定IP和端口,监听来自客户端的消息。并由
阅读全文
摘要:大家应该都知道,python有一个GIL(全局解释器锁),用于控制多线程的并发行为。 注:GIL不是必须的,可以通过对每个资源单独加锁的方式去掉GIL,也就是将GIL换成更细粒度的锁。 GIL锁的实现 Linux上的POSIX线程的实现有如下行为: 1、同一个线程多次调用pthread_mutex_
阅读全文
摘要:如果你会用 C,添加新的 Python 内置模块会很简单。以下两件不能用 Python 直接做的事,可以通过 extension modules 来实现:实现新的内置对象类型;调用 C 的库函数和系统调用。 为了支持扩展,Python API(应用程序编程接口)定义了一系列函数、宏和变量,可以访问
阅读全文
摘要:三方库:keystonemiddleware 入口:auth_token/init.py#filter_factory()方法 通过之前的wsgi知识可以知道,消息在中间件中传递的时候是调用的中间件的call方法; 这里是调用了父类BaseAuthProtocol的call方法,然后调用到AuthP
阅读全文
摘要:一、服务的加载及初始化 osapi-karbor 服务启动的过程中,调用 deploy.loadpp 使用 config 方式从 api-paste.ini 文件来 load 名为osapi_karbor 的应用,其入口在文件的 **[composite:osapi_karbor]**部分: [co
阅读全文
摘要:基本所有的openstack服务都依赖 evenlet 完成各种并发任务,它的进程可分为两类: 1、 WSGIService: 接收和处理 http 请求,依赖eventlet.wsgi 的 wsgi server 处理 http 请求,比如nova-api 2、 Service: 接收和处理 rp
阅读全文