python http服务flask架构实用代码 | 实用代码架构

目录

概述

依赖库

代码 

总结 


概述

本篇文章主要分享一个python的简单http服务flask架构。目前主流的python的服务框架有django、flask,相较于django来说,flask更小巧玲珑。至于并发的问题,使用了gevent协程io进行处理。

依赖库

flask安装,使用豆瓣源加速。

pip install flask -i https://pypi.douban.com/simple

gevent安装,使用豆瓣源加速。

pip install gevent -i https://pypi.douban.com/simple

代码 

#!/user/bin/env python
# coding=utf-8
"""
@project : TestDemo
@author  : huyi
@file   : app.py
@ide    : PyCharm
@time   : 2021-10-15 11:58:44
"""
from flask import Flask, request
from gevent.pywsgi import WSGIServer
from gevent import monkey
import json

# 将python标准的io方法,都替换成gevent中的同名方法,遇到io阻塞gevent自动进行协程切换
monkey.patch_all()

app = Flask(__name__)


# 请求返回实体
class TestResponse:
    def __init__(
            self,
            code,
            success,
            msg, data):
        self.code = code
        self.success = success
        self.msg = msg
        self.data = data


@app.route('/progress', methods=['POST'])
def progress():
    request_data = json.loads(request.data)
    print("进度回调:{}".format(request_data))
    return json.dumps(
        TestResponse(0, True, "progress callback success", None),
        default=lambda obj: obj.__dict__,
        sort_keys=True,
        indent=4)


@app.route('/result', methods=['POST'])
def result():
    request_data = json.loads(request.data)
    print("结果回调:{}".format(request_data))
    return json.dumps(
        TestResponse(0, True, "result callback success", None),
        default=lambda obj: obj.__dict__,
        sort_keys=True,
        indent=4)


if __name__ == '__main__':
    print("遇事不决,可问春风。")
    WSGIServer(('0.0.0.0', 8383), app).serve_forever()

使用postman验证结果

总结 

该代码架构简单有效,不用加过多繁重的东西。如果需要异步非阻塞接口调用的话,可以加个线程池,把执行内容扔个线程出去,一样适用。

如果本文对你有帮助,请点个赞支持一下吧。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑客阿良_ALiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值