天青色等烟雨

而我在等你


  • 首页

  • 归档

  • 分类

  • 标签

  • 留言

  • 关于

  • 搜索
  • High一下
close

Python 进程线程协程(3)--Queue模块及源码分析

发表于 2019-10-08   |   分类于 Python

就算孤独,也不能一个人哭泣,无论走在哪,都要高傲地挺立;就算是挫败,也不能窝囊地依靠,无论在何时,都要倔强地站起。前面的路过于平坦,惬意久了难以找到方向;唯有脚下布满了荆棘,前方或许才是生机。

简介

Queue模块是提供队列操作的模块,队列是线程间最常用的交换数据的形式。该模块提供了三种队列:

  • Queue.Queue(maxsize):先进先出,maxsize是队列的大小,其值为非正数时为无线循环队列
  • Queue.LifoQueue(maxsize):后进先出,相当于栈
  • Queue.PriorityQueue(maxsize):优先级队列。

其中LifoQueue,PriorityQueue是Queue的子类。三者拥有以下共同的方法:

阅读全文 »

WSGI uWSGI uwsgi你搞清楚了吗

发表于 2019-05-01   |   分类于 Python

生命只有走出来的精彩,沒有等待出来的辉煌;埋怨,只是一种懦弱的表现;努力,才是人生的态度!实力代表尊严!

相信大家在学习web开发的过程中一定会遇到 cgi、 wsgi 之类的名词,然后看着他们十分相似的解释估计还没开始写代码就晕了,这都什么鬼?
下面我们就来认识一下

阅读全文 »

Oslo系列之oslo.cache

发表于 2018-10-05   |   分类于 Openstack

人生需要做到。生活要:热情,乐观。爱情要:专一,用情。友情要:真诚,守信。亲情要:孝敬,疼爱。每一天一点,人生就进步一点。

在OpenStack中除了使用数据库对云平台所产生的数据进行持久化外,还需要对一些常用的数据或状态进行缓存。而oslo.cache便通过dogpile.cache库实现了一个缓存机制为OpenStack其他组件提供缓存。目前,oslo.cache支持多种缓存机制,包括Memcache、etcd 3.x、MongoDB、dictionary等。本文将详细介绍oslo.cache提供的缓存机制与常用的使用方法。

dogpile.cache库

dogpile.cache是一个缓存API,它为各种类型的缓存后端提供了一个通用的接口;另外,它还提供了API钩子,可以将这些不同的缓存后端与dogpile库提供的锁机制结合使用。由于本文重点介绍oslo.cache,所以不对dogpile.cache库做深入展开,有兴趣的同学可以参考dogpile.cache文档。本文只对dogpile.cache中提供的通用接口进行介绍。

阅读全文 »

Oslo系列之oslo.context

发表于 2018-10-05   |   分类于 Openstack

在茫茫沙漠,唯有前时进的脚步才是希望的象征。

在OpenStack中,oslo.context为所有OpenStack组件提供了一个保存请求上下文信息的基类,该类主要有两个作用:一、用来存储一个Web请求的安全信息;二、用来为oslo.log提供上下文详情。本章将详细分析oslo.context组件。

RequestContext基类

在oslo.context组件中,主要定义了RequestContext基类,该类的每个实例化对象都保存了一个Web请求上下文信息。该类中保存的字段信息有:请求的Token信息,用户信息,项目信息,服务信息等;在实例化时,该类会为每个对象生成一个request_id在项目中唯一标识该对象。该类还提供了一系列方法以便其他OpenStack项目调用。其中,比较重要的方法主要有以下几个:

阅读全文 »

Oslo系列之oslo.concurrency

发表于 2018-10-05   |   分类于 Openstack

你所选择的朋友,决定你的命运。

oslo.concurrency是一个为OpenStack其他项目提供用于管理线程的工具库,这样,OpenStack其他项目可以直接调用oslo.concurrency库利用其锁机制安全的运行多线程和多进程应用,也可以运行外部进程。本文总结了oslo.concurrency中常用的工具类或方法及其对应的使用方法。

lockutils

lockutils模块封装了oslo库的锁机制,其中,定义了读写锁、信号量以及同步装饰器方法等。本节分别介绍这些类和方法的实现与使用。

阅读全文 »

Oslo系列之oslo.config

发表于 2018-10-05   |   分类于 Openstack

生命太过短暂,今日放弃了明天不必须能得到。

随着OpenStack项目的不断发展与完善,OpenStack社区将所有组件中的具有共性的组件剥离出来,并统一放在oslo组件下。oslo中的组件不仅可以在OpenStack项目中使用,也可以单独作为第三方工具包供其他项目使用。oslo.config项目是oslo组件中用于OpenStack配置文件的一个项目。本文首先以Nova项目为例,介绍了oslo.config的用法;然后,根据源码详细分析了其实现原理。

oslo.config用法

定义配置项

本小节以nova组件为例介绍oslo.config组件的用法。首先,要使用oslo.config需要导入该模块,一般地,直接导入oslo.config中的cfg即可。

阅读全文 »

Oslo系列之oslo.db

发表于 2018-10-05   |   分类于 Openstack

士搏出惊涛骇流而不沉沦,懦夫在风平浪静也会溺水。

oslo.db库为OpenStack其他组件提供了针对不同后端数据库的数据库连接,并提供了各种数据库操作的辅助工具类和方法。OpenStack各组件使用SQLAlchemy框架实现对数据库的连接、查询等操作,因此oslo.db并不是一个完整的ORM库,也没有封装执行SQL语句;其只是对SQLAlchemy进行了封装,其与SQLAlchemy结合使用使得在OpenStack各组件中实现数据库连接、查询等操作变得更加简单。因此,本文不对SQLAlchemy的使用进行详细介绍,如果需要了解SQLAlchemy的使用,可以参考python对Mysql操作和使用ORM框架(SQLAlchemy)和SQLAlchemy技术文档。本文将结合oslo.db的使用详细分析其实现方式。

Session Handling

使用方法

Session handling指的是使用oslo_db.sqlalchemy.enginefacade模块管理数据库连接、会话和事务处理等,该模块一般以装饰器形式使用,也可以使用with语句进行调用。

阅读全文 »

Oslo系列之oslo.i18n-上

发表于 2018-10-05   |   分类于 Openstack

千万人的失败,都有是失败在做事不彻底,往往做到离成功只差一步就终止不做了。

一般地,一个大型的项目,特别是一个跨国平台,都需要进行国际化支持。OpenStack作为一个开源的云平台方案,同样需要支持国际化。因此,OpenStack社区开发了oslo.i18n组件支持OpenStack项目的国际化。本文便简单的介绍了OpenStack支持国际化的实现与使用。

oslo.i18n的实现

OpenStack项目支持国际化的实现非常简单,在oslo.i18n中主要使用TranslatorFactory类实现国际化支持。该类中提供了primary()方法进行国际化翻译,而该类则实际调用了_make_translation_func(domain)实现具体的操作。

阅读全文 »

Oslo系列之oslo.i18n-下

发表于 2018-10-05   |   分类于 Openstack

没有人能替你承受痛苦,也没有人能抢走你的坚强。

上一篇我们介绍了这个包的使用方式和在openstack中应用,这篇文章分析一下原理和源码

简介

i18n是用来进行国际化翻译的。经过调查,现在主要有两种翻译方式。

阅读全文 »

Oslo系列之oslo.log

发表于 2018-10-05   |   分类于 Openstack

认真能够把事情做对,而用心却能够做到完美。

oslo.log为OpenStack所有组件提供一种标准的日志记录方式,它也能为用户提供定制的日志记录样式。通过oslo.log提供的日志记录,OpenStack开发者可以通过日志文件更加快速准确的定位问题本章将结合OpenStack项目中日志记录的应用分析oslo.log的实现原理。

oslo.log的用法

oslo.log的使用方法

对于OpenStack项目而言,使用oslo.log记录日志的方式非常简单。

阅读全文 »
1234…7
magiceses

magiceses

Stay Hungry,Stay Foolish

61 日志
5 分类
15 标签
RSS
Github CSDN
Creative Commons
友情链接
  • 建站日志
  • 打赏
您是第个小伙伴 本站总浏览次
© 2016 - 2021 magiceses
由 Hexo 强力驱动
主题 - NexT.Pisces
全站共 1m 字