基于 docker 打包部署 python web 项目至 linux 服务器

将Python Web应用容器化

本文将讨论如何让“容器化”的Python Web应用跑在安全的沙箱里,严格的坚守在其各自的环境中(当然,除非你指定它们与其他应用进行“连接”)。

以下将介绍两站方法如何创建一个Docker容器,如何用这个容器来跑我们的Python Web应用,以及如何用一个Dockerfile来描述整个构建过程以实现完整的自动化。

如何使Flask-Migrate忽略在Models定义的数据库视图

Flask-Migrate

在使用Flask-SQLAlchemy来定义模型,然后使用Flask-Migrate自动生成迁移脚本以部署到MySQL数据库过程中,我们可能会在应用程序中使用的数据库中定义许多SQL Views辅助查询。

但是在迁移命令migrate后,Flask-Migrate现在会为该视图生成一个迁移文件,因为它认为它是一个表格。如何在迁移过程中让Flask-Migrate忽略视图?

Python3 __init__.py和__init__函数的作用

一.__init__.py文件

在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml 导入 dom )的时候,实际上导入了它的 __init__.py 文件。

一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。

在python中, module(也即python的模块)是一个单独的文件来实现的,要把是py文件,或者pyc文件,甚至是C扩展的dll文件。而对于package, Python使用了文件夹来实现它,可以说,一个文件夹就是一个package,里面容纳了一些py、pyc或dll文件,这种方式就是把module聚合成一个package的具体实现。

Python3 Task and Coroutines

1. Coroutines 协程

Python3 中协程使用标准库中 asyncio 中的 async def 方法声明或者使用装饰器 @asyncio.coroutine . 在Python3.5之后开始使用 async def 形式的协程, 并且如果不是需要兼容以前版本的话,尽量使用这种形式.

Python3 元类的使用

metaclass是Python中非常具有魔术性的对象,它可以改变类创建时的行为。这种强大的功能使用起来务必小心。

本文介绍 python 元类的概念以及使用场景。

Python3 单例模式的实现

何为单例模式

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。

比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。

在 Python 中,我们可以用多种方法来实现单例模式