栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

微服务框架nameko + sanic简单使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务框架nameko + sanic简单使用

简介:nameko 是python中一款小巧、简洁的、异步通信方式的微服务架构,通过rabbitmq消息组件来实现RPC服务。

Sanic教程相关:
sanic框架:简介
sanic:安装
sanic:启动和访问
sanic:增删改查 - get、post、put、patch、delete
sanic:request属性(部分)
sanic:response响应(部分)
python:sanic + aiomysql
python:sanic - websocket
sanic:view - restful普通和异步的写法
sanic:sanic_openapi - swagger
sanic:调试模式
sanic:读、写、删除cookies

nameko官方文档:

https://nameko.readthedocs.io/en/stable

nameko - github地址:

https://github.com/nameko/nameko

由于需要用到rabbitmq,所以我们首先安装:

centos7:4步搞定docker安装rabbitmq

这里我们重新安装和使用:

DockerHub拉取rabbitmq镜像:
docker pull rabbitmq:management

运行RabbitMQ容器: 不设置则账户密码为:guest/guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

前端登录核实安装rabbitmq的情况:

设置则按:RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin
不设置则账户密码为:guest/guest

通过miniconda单独创建一个Python环境,并激活这个环境:

centos7.6:安装python、miniconda

conda create -n py392namekoEnv python=3.9.2 -y
conda activate py392namekoEnv



创建项目目录,文件hello_service.py、service.py、app.py、:

mkdir namekotest
cd namekotest
touch hello_service.py
touch service.py
touch app.py

vim hello_service.py

from nameko.rpc import rpc
import datetime


class HelloService:
    name = "hello_service"

    @rpc
    def hello(self, name):
        return "hello.{}.{}".format(name, str(datetime.datetime.now())[:-7])

vim service.py

from nameko.standalone.rpc import ClusterRpcProxy

# 172.17.0.2 是服务的内网 IP
ConFIG = {'AMQP_URI': "amqp://guest:guest@172.17.0.2"}


def send_message():
    with ClusterRpcProxy(CONFIG) as rpc:
        rpc.hello_service.hello(name="tom")


if __name__ == '__main__':
    send_message()

vim app.py

from sanic import Sanic
from nameko.standalone.rpc import ClusterRpcProxy
from sanic.response import json

app = Sanic(__name__)

# MQ配置  172.17.0.2 是服务的内网 IP
config_mq = {'AMQP_URI': "amqp://guest:guest@172.17.0.2"}


@app.get('/hello')
async def hello_world(request):
    with ClusterRpcProxy(config_mq) as rpc:
        data = request.args
        result = rpc.hello_service.hello(name=data["name"][0])
        return json({"code": 200, "result": result})


if __name__ == '__main__':
    app.run(host="172.17.0.2", port=3033, auto_reload=True)

安装nameko、sanic库:

pip install nameko
pip install sanic



启动nameko微服务:

nameko run hello_service --broker amqp://guest:guest@172.17.0.2

客户端测试访问:

新增一个窗口进入同级目录并且激活conda环境
cd namekotest
conda activate py392namekoEnv

进入nameko交互模式
nameko shell

发起客户端请求。 服务端响应回 hello {name} + time
>>> n.rpc.hello_service.hello(name="test")


启动app应用并访问:

新增一个窗口进入同级目录并且激活conda环境
cd namekotest
conda activate py392namekoEnv
python app.py

客户端访问和得到的响应:http://外网IP:端口/hello?name=lily

服务端接收到的请求:

这样,我们就简单的实现了一个nameko微服务项目,并且可以通过客户端浏览器访问的微服务接口。

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号