Halo
发布于 2022-05-06 / 143 阅读 / 0 评论 / 0 点赞

python 微服务

Nameko

  • Nameko 是一款小巧、简洁的、异步通信方式的微服务架构
  • 采用 RabbitMQ 消息队列作为消息中间件,基于发布者、订阅者模式
  • 消费者与生产者基于 RPC 进行通讯

定义服务

# producer_service.py

from nameko.rpc import rpc

class GenerateService(object):
    # 定义微服务名称
    name = "generate_service"

    @rpc
    def hello_world(self, msg):
        print('hello,i am been called by customer(消费者),返回消息:{}'.format(msg))

        # 返回结果
        return "Hello World!I Am a msg from producer!"   # 返回结果        return "Hello World!I Am a msg from producer!"

注册服务到mq

# 注册服务
# producer_service:目标文件
# admin:admin:MQ用户名及密码
# ip地址:5672:MQ服务器ip地址及应用端口号
# my_vhost:虚拟机名
nameko run producer_service --broker amqp://admin:admin@ip地址:5672/my_vhost

flash 定义api 接口

from flask import Flask
from nameko.standalone.rpc import ClusterRpcProxy

app = Flask(__name__)

# MQ配置
config_mq = {'AMQP_URI': "amqp://admin:admin@ip地址:5672/my_vhost"}

@app.route('/hello_world', methods=['GET'])
def call_service():
    with ClusterRpcProxy(config_mq) as rpc:
        # 消费者调用微服务(生产者),获取服务(生产者)的返回值
        result = rpc.generate_service.hello_world(msg="xag msg")

        # 返回结果
        return result, 200

app.run(debug=True)

客户端访问

调用API接口
http://127.0.0.1:5000/hello_world
Method:GET


评论