nameko微服务框架的django包装器。
django-nameko的Python项目详细描述
django nameko
特拉维斯ci
Branch | Build status |
---|---|
master | |
develop |
Nameko微服务框架的django包装器。
支架
用
测试- Python2.7、3.5、3.6、3.7
- Django 1.11、2.0、2.1、2.2
- nameko 2.11,2.12
如何使用
fromdjango_namekoimportget_pool# Within some view or model:withget_pool().next()asrpc:rpc.mailer.send_mail(foo='bar')
安装
pip install django-nameko
配置
# Config to be passed to ClusterRpcProxy NAMEKO_CONFIG={'AMQP_URI':'amqp://127.0.0.1:5672/'}# Number of proxies to create # Each proxy is a single threaded standalone ClusterRpcProxyNAMEKO_POOL_SIZE=4# Set timeout for RPCNAMEKO_TIMEOUT=15# timeout 15 seconds# Add this dictionary to context_data of every RPCNAMEKO_CONTEXT_DATA={'hostname':"my.example.com"}# Create multiple ClusterRpcProxy pool each one assoiate with a name# Every pool with pool name different than 'default' will use 'default' pool config as default configurationNAMEKO_CONFIG={'default':{'AMQP_URI':'amqp://','POOL_SIZE':4,'POOL_CONTEXT_DATA':{"common":"multi"},'POOL_TIMEOUT':None},'pool1':{'AMQP_URI':'amqp://pool2','POOL_CONTEXT_DATA':{"name":"pool1","data":123},},'pool2':{'AMQP_URI':'amqp://pool3','POOL_CONTEXT_DATA':{"name":"pool2","data":321},'POOL_TIMEOUT':60},'pool3':{'POOL_SIZE':8,'POOL_TIMEOUT':60}}# Use multi pool by putting pool name in get_pool(..)fromdjango_namekoimportget_poolwithget_pool('pool1').next()asrpc:rpc.mailer.send_mail(foo='bar')# call get_pool() without argument will return the 'default' pool# but you can override the rpc context data before call, example below.# it will auto revert back to POOL_CONTEXT_DATA when exit the with blockwithget_pool().next()asrpc:rpc._worker_ctx.data['SMTP_SECRET']='SECRETXXX'rpc.mailer.send_mail(foo='bar')# try to call rpc outside of with statement block will raise an AttributeError exception rpc.mailer.send_mail(bar='foo')# File "/usr/local/lib/python2.7/site-packages/django_nameko/rpc.py", line 69, in __getattr__# raise AttributeError(item)# AttributeError: mailer
贡献
运行测试:
- 运行本地rabbitmq
- 执行TOX
docker run --rm -p 15672:15672 -p 5672:5672 -p 5671:5671 --name nameko-rabbitmq nameko/nameko-rabbitmq:3.6.6 # open another shell then run python setup.py test# to run full test with coverage use tox
学分
感谢那些制作了一个很棒的Nameko框架的人。
维护人员:
- 安德鲁·杜奈(@and3rson)
- 文森特安特朗(@tranvietanh1991)