nameko笔记1-nameko启动命令分析

nameko 命令分析

安装nameko

pip install nameko

安装 rabbitmq
很多nameko 内嵌的功能依赖于rmq(如 rpc pub-sub)

debian-based operating systems:

apt-get install rabbitmq-server

参考:

参考: https://nameko.readthedocs.io/en/stable/installation.html

命令一览

nameko -h

positional arguments:
{backdoor,show-config,run,shell}

optional arguments:
-h, --help            show this help message and exit

上面四个 命令 对应的执行代码在: nameko/cli/commands.py

nameko run 命令

nameko.cli.main.main
-> nameko.cli.commands.Run#main
->nameko.cli.run.main

允许的参数

@staticmethod
def init_parser(parser):
parser.add_argument(
‘services’, nargs=’+’,
metavar=‘module[:service class]’,
help=‘python path to one or more service classes to run’)

    parser.add_argument(
        '--config', default='',
        help='The YAML configuration file')

    parser.add_argument(
        '--broker', default='pyamqp://guest:guest@localhost',
        help='RabbitMQ broker url')

    parser.add_argument(
        '--backdoor-port', type=int,
        help='Specify a port number to host a backdoor, which can be'
        ' connected to for an interactive interpreter within the running'
        ' service process using `nameko backdoor`.')

    return parser

最终调用方法: nameko.cli.run.run

  1. config 可以对应 yaml 的配置,里面的配置包括: nameko/constants.py 的定义的变量名 以及 LOGGING
    LOGGING 配置直接传给 logging.config.dictConfig
  2. 使用 ServiceRunner 管理 service_cls 列表
  3. 依次调用了 add_service 这里会 生成 ServiceContainer 实例,然后add到 service_map
  4. nameko.runners.ServiceRunner#start
    并发启动全部 container的start (每个service 创建一个 container)
    container 的start并发 启动 extensions 的 setup 和 start .

插件一些注意事项

  1. 不要在 插件的__init__ 方法中做初始化,因为声明 时候 以及 bind 时候 会调用 2次 做好 在 setup中 做初始化.

  2. 插件 的 setup 和 start 都是 并发调用的,所以如果有依赖 自己要注意, 可以 一个放在setup 一个在 start 调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值