开始

本节课程我们将初始化项目框架、定义第一个服务。 创建一个新的项目、安装Flask

$ mkdir flask-microservices-users && cd flask-microservices-users
$ mkdir project
$ pyenv virtualenv 3.6.4 tdd3
$ pyenv local tdd3
(tdd3)$ pip install Flask==0.12.2

在project 目录下面添加__init__.py文件,配置第一个路由:

# project/__init__.py
from flask import Flask, jsonify

# 初始化app
app = Flask(__name__)


@app.route('/ping', methods=['GET'])
def ping_pong():
    return jsonify({
        'status': 'success',
        'message': 'pong!'
    })

然后,添加Flask-Script,该依赖包可以用来在命令行管理Flask app:

(tdd3)$ pip install Flask-Script==2.0.6

在项目根目录下面添加一个manage.py的文件:

# manage.py
from flask_script import Manager
from project import app

manager = Manager(app)

if __name__ == '__main__':
    manager.run()

这里我们创建了一个新的Manager实例,来处理所有的从命令行输入的命令。运行程序:

(tdd3)$ python manage.py runserver

运行成功后,我们可以在浏览器中打开页面http://localhost:5000/ping,你能看到如下的json 信息输出到页面:

{
  "message": "pong!",
  "status": "success"
}

然后我们关掉服务(Ctrl+C),在project目录下面新增一个config.py的文件,内容如下:

 #project/config.py
class BaseConfig:
    """基础配置"""
    DEBUG = False
    TESTING = False

class DevelopmentConfig(BaseConfig):
    """开发环境配置"""
    DEBUG = True

class TestingConfig(BaseConfig):
    """测试环境配置"""
    DEBUG = True
    TESTING = True

class ProductionConfig(BaseConfig):
    """生产环境配置"""
    DEBUG = False

然后更新__init__.py文件,在初始化的时候配置开发环境:

from flask import Flask, jsonify

# 初始化app
app = Flask(__name__)
# 环境配置
app.config.from_object('project.config.DevelopmentConfig')

@app.route('/ping', methods=['GET'])
def ping_pong():
    return jsonify({
        'status': 'success',
        'message': 'pong!'
    })

然后重新运行程序,我们能在终端中看到debug模式的提示信息:

(tdd3)$ python manage.py runserver
    * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    * Restarting with stat
    * Debugger is active!
    * Debugger PIN: 770-657-842

现在当你的代码有任何改动的时候,应用都会自动加载,不需要手动重启了。为了保证我们的项目依赖能实时同步,这里我们将依赖包添加到一个requirements.txt的文件中,我们只需要利用pipfreeze命令就可以轻松拿到我们项目的依赖列表了:

(tdd3)$ pip freeze > requirements.txt

然后看看requirements.txt的内容吧:

Flask==0.12.2
Flask-Script==2.0.6

最后,在项目根目录下面添加一个.gitignore的文件:

__pycache__
env

初始化git 仓库,然后提交代码吧~