美文网首页
nameko初识~nameko系列之一

nameko初识~nameko系列之一

作者: andrew_su_cd | 来源:发表于2018-11-09 15:18 被阅读0次

偶然找到了nameko。
看这个名字,感觉是个日本程序员的作品。
微服务,rpc做微服务,思路很简单,很直接。
1、用docker快速搭建一个环境
docker run -p 5672:5672 --hostname nameko-rabbitmq rabbitmq:3
这样完成了基础环境的构建和rabbitmq的运行。
2、然后可以编写自己的python代码,也就是自己的微服务,将要以rpc方式对外提供服务的微服务,hello.py

from nameko.rpc import rpc

class GreetingService:   
  name = "greeting_service"   
   
   @rpc   
  def hello(self, name):       
    return "Hello, {}!".format(name)

运行起来:

nameko run hello.py

可以看到注册到rabbitmq,

3、使用shell 测试一下这个微服务:
nameko shell,这是一个微服务的调测shell。

>> n.rpc.greeting_service.hello(name='jerry')

4、在flask中调用微服务

from flask import Flask, request
from flasgger import Swagger
from nameko.standalone.rpc import ClusterRpcProxy

app = Flask(__name__)

CONFIG = {'AMQP_URI': "amqp://guest:guest@localhost"}

@app.route('/hello', methods=['POST'])
def hello():
    with ClusterRpcProxy(CONFIG) as rpc:
        result = rpc.greeting_service.hello(name="jerry")
        return result, 200

app.run(debug=True)

运行起来 python app.py

说明

  • 微服务采用一个class包装起来,这里使用了GreetingService,注意这里面使用了类变量 name,这是必须的,表明我是谁,也就是微服务真正标识我这个微服务是谁,是通过这个name来表达的。
  • 在微服务类中,可以定义各种实例方法,如果需要将某些实例方法暴露出去,则需要在方法前面增加一个装饰器@rpc即可。
  • 在shell下调测微服务,是一种比较方便的做法,查看微服务提供的数据是否如我们所愿。
  • flask应用调用微服务,也是非nameko应用调用微服务的一种通用的方法。通过ClusterRpcProxy来完成

相关文章

网友评论

      本文标题:nameko初识~nameko系列之一

      本文链接:https://www.haomeiwen.com/subject/luawxqtx.html