改过自新的拉比https://github.com/MidTin/rabbitrpc
rabbitmq-rpc的Python项目详细描述
基于rabbitmq的RPC,克隆自here
如何使用
原始代码只能在控制台中运行,在windows(服务器端)中有问题。所以我修改了一些代码。 现在,服务器端同时支持两者鼠兔块连接以及pika.SelectionConnection连接. 在BlockConnection模式下,服务器端只能在单线程中运行。在选择连接模式下, 服务器可以在多线程中运行(而不是在windows中)。在
- 安装:
pip install rabbitmq-rpc
- 在
用法:
在
1.在rabbitmq服务器中创建rabbitmq帐户。
2.运行服务器.py先跑后跑客户端.py在 - 在
在服务器.py在
在
- 在客户端.py在
fromrabbitmq_rpc.clientimportRPCClientimporttimedefadd(i):t1=time.time()client=RPCClient(amqp_url='amqp://yourname:yourpasswd@10.147.17.135:5672/')res=client.call_add(0,i)t2=time.time()print(f"{0} + {i} = {res} RPC Time Cost: {t2-t1:.2f}")returnresforiinrange(300):obj=add(i)
- 带烧瓶的客户:带烧瓶的客户_烧瓶.py在
fromrabbitmq_rpc.clientimportRPCClientimportflaskweb=flask.Flask(__name__)web.debug=Trueimporttimedefadd(i):t1=time.time()client=RPCClient(amqp_url='amqp://yourname:yourpasswd@10.147.17.135:5672/')res=client.call_add(0,i)t2=time.time()print(f"{0} + {i} = {res} RPC Time Cost: {t2-t1:.2f}")returnres@web.route('/web/<n>')deftest_web(n):res=add(int(n))returnstr(res)if__name__=='__main__':# Notice, In default, flask enabled threading. # If single-thread is needed, pass in 'threaded=False' optionweb.run(host='0.0.0.0',use_reloader=False)
*注意:RPCClient不是线程安全的。这是因为pika不是线程安全的。 因此,只在一个线程中创建一个RPCClient对象。不要在多线程中使用它。*在
原始README
注意:用rabbitmq_rpc
==========
Rabbit RPC
==========
简述
----
这是对 RabbitMQ 的 Pika_ 库进行封装的,一套简易 RPC 客户端/服务端库。
安装说明
--------
::
pip install rabbit-rpc
使用事例
--------
服务端
~~~~~~
::
# project/consumers.py
from rabbit_rpc.consumer import consumer
@consumer(name='add')
def add(a, b):
return a + b
# project shell
rabbit_rpc worker --amqp 'amqp://guest:guest@localhost:5672/'
# with django
rabbit_rpc worker --amqp 'amqp://guest:guest@localhost:5672/' --django project
客户端
~~~~~~
::
from rabbit_rpc.client import RPCClient
client = RPCClient(amqp_url='amqp://guest:guest@localhost:5672/')
ret = client.call_add(1, 1, timeout=1)
# or ignore result
client.call_add(1, 1, ignore_result=True)
# specify routing_key
client.call_add(1, 1, routing_key='default')
.. _Pika: https://github.com/pika/pika
- 项目
标签: