分类 Python 下的文章

Python 的枚举类型


起步

Python 的原生类型中并不包含枚举类型。为了提供更好的解决方案,Python 通过 PEP 435 在 3.4 版本中添加了 enum 标准库。

枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。在没有专门提供枚举类型的时候我们是怎么做呢,一般就通过字典或类来实现:

Color = {
    'RED'  : 1,
    'GREEN': 2,
    'BLUE' : 3,
}

class Color:
    RED   = 1
    GREEN = 2
    BLUE  = 3

这种来实现枚举如果小心翼翼地使用当然没什么问题,毕竟是一种妥协的解决方案。它的隐患在于可以被修改。


分布式任务队列Celery使用说明


起步

Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。

运行模式是生产者消费者模式:

20181127092758.png


Python Web之路Django(六):高级模型查询


起步

为了说明这部分的例子,模型结构如下:

class Publisher(models.Model):   # 出版社
    name = models.CharField(max_length=31)

class Book(models.Model):       # 书
    name = models.CharField(max_length=31)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)

class Author(models.Model):    # 作者
    name = models.CharField(max_length=31)
    books = models.ManyToManyField(to=Book)


Django+Uwsgi+Nginx 实现生产环境部署


Django的部署可以有很多方式,生产环境大多采用nginx+uwsgi的方式

uwsgi介绍

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  1. WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
  2. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
  3. 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
  4. uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。