Python RabbitMQ on Lambda
Checking official documents
https://github.com/benjamin-hodgson/asynqp
More detail in the API document
https://asynqp.readthedocs.io/en/v0.4/reference.html#connecting-to-the-amqp-broker
That is the basic method in python
import asyncio
import asynqp
@asyncio.coroutine
def hello_world():
"""
Sends a 'hello world' message and then reads it from the queue.
"""
# connect to the RabbitMQ broker
connection = yield from asynqp.connect('localhost', 5672, username='guest', password='guest')
# Open a communications channel
channel = yield from connection.open_channel()
# Create a queue and an exchange on the broker
exchange = yield from channel.declare_exchange('test.exchange', 'direct')
queue = yield from channel.declare_queue('test.queue')
# Bind the queue to the exchange, so the queue will get messages published to the exchange
yield from queue.bind(exchange, 'routing.key')
# If you pass in a dict it will be automatically converted to JSON
msg = asynqp.Message({'hello': 'world'})
exchange.publish(msg, 'routing.key')
# Synchronously get a message from the queue
received_message = yield from queue.get()
print(received_message.json()) # get JSON from incoming messages easily
# Acknowledge a delivered message
received_message.ack()
yield from channel.close()
yield from connection.close()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(hello_world())
event_loop : endless loop
coroutine: async function, it will be bind to event_loop, event_loop will run that.
task: status of coroutine
future: similar to task
async/await: async coroutine, await block and wait for result
One example to understand:
Import asyncio
Import time
Now = lambda : time.time()
async def do_some_work(x):
print(‘waiting: ‘, x)
start = now()
coroutine = do_some_work(2)
loop = asyncio.get_event_loop()
task = loop.create_task(coroutine)
print(task)
loop.run_until_complete(task)
print(task)
print(’Time: ‘, now() - start)
Results
<Task pending coro=<do_some_work() running at /
Waiting: 2
<Task finished coro=<do_some_work() done, defined at result=None>
TIME: 0.0003490447998046875
Very useful details here
https://www.jianshu.com/p/b5e347b3a17c
References:
https://github.com/benjamin-hodgson/asynqp
https://asynqp.readthedocs.io/en/v0.4/
https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html
https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html
https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/
https://asynqp.readthedocs.io/en/v0.4/reference.html#connecting-to-the-amqp-broker
https://www.jianshu.com/p/b5e347b3a17c
https://lotabout.me/2017/understand-python-asyncio/
分享到:
相关推荐
amqpstorm, 线程安全 python RabbitMQ客户端&管理库 AMQPStorm 线程安全 python RabbitMQ客户端&管理库。 简介 AMQPStorm是一个设计稳定,稳定和线程安全的库。 1
### Python与RabbitMQ知识点详解 #### 一、引言 在现代软件开发尤其是分布式系统设计中,消息队列作为实现服务间异步通信的重要工具之一,被广泛应用。其中,RabbitMQ是一款非常流行的消息中间件,支持多种消息...
本文将详细讲解如何在Python中使用RabbitMQ来实现生产者消费者模式。 首先,我们需要在本地或服务器上安装RabbitMQ。安装完成后,可以通过Web管理界面或命令行工具`rabbitmqctl`来检查和管理队列。在Python中,我们...
在本文中,我们将深入探讨如何使用Python和RabbitMQ实现远程过程调用(RPC)。RabbitMQ是一种流行的消息中间件,它允许分布式系统中的组件通过消息传递进行通信。RPC模式在Python中通过RabbitMQ实现,可以使得客户端...
标题和描述中提到的“amqpstorm”是一个专为Python设计的RabbitMQ客户端和管理库,具有线程安全的特性。这意味着它能够在多线程环境中安全地与RabbitMQ服务器进行交互,确保在并发操作时数据的一致性和完整性。 **...
上节回顾 主要讲了协程、进程、异步IO多路复用。 协程和IO多路复用都是单线程的。 epoll 在linux下通过这个模块libevent.so实现 ...RabbitMQ也是消息队列,那RabbitMQ和之前python的Queue有什
RabbitMQ客户连接池的实现代码示例
python rabbitmqadmin declare queue name=test auto_delete=false durable=false --username=xxx --password=xxx 查看队列:rabbitmqctl list_queues 或者:python rabbitmqadmin list queues --username=xxx --...
因为系统本身一直在用RabbitMQ做异步处理任务的中间件,所以想到是否可以利用RabbitMQ实现延迟队列。功夫不负有心人,RabbitMQ虽然没有现成可用的延迟队列,但是可以利用其两个重要特性来实现之:1、Time To Live...
rabbitmq_priority_topic_python rabbitmq 带有优先级和主题功能,可以发送带优先级的物品,带主题的物品接收 确保插件 rabbitmq_priority_queue 已安装并启用。 安装库:python-pika 看这里的情况:你想用queue来...
rabbitmq-nagios-插件一组基于python的Rabbitmq插件。 安装: easy_install pynagios 将这些脚本复制到$ NAGIOS_HOME / libexec / 配置您的nagios系统。 注意,这些脚本需要HOSTNAME而不是HOSTADDRESS来区分Rabbit...
### Python 实现 RabbitMQ 六种消息模型的深入解析 #### 一、引言 RabbitMQ 是一种基于 AMQP(Advanced Message Queuing Protocol)标准的开源消息中间件,广泛应用于分布式系统中作为消息传递的媒介。在实际开发...
Python使用RabbitMQ需要Pika库: sudo pip install pika 好了,接下来我们先看交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里...
虽然RabbitMQ本身并不直接依赖Python,但它的管理工具`rabbitmqadmin`是用Python编写的,所以确保系统中已经安装了Python 3是必要的。如果你的系统没有预装Python,可以下载Python的源码包,如`Python-3.8.10.tgz`,...
flask-rabbitmq是一个框架,简化了python操作Rabbitmq的框架,可以与Flask很好地结合。 因此,您无需考虑基础操作 安装 该项目已提交给Pypi,可通过pip安装: $ pip install flask-rabbitmq 产品特点 开始关注Flask...
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦...
**标题解析:** "rabbitmq-python-wrap" 是一个Python库,专门用于封装RabbitMQ服务器的连接。"rabiitmq服务器连接的python封装"强调了这个库的主要功能,即为Python开发者提供一个方便的接口来操作RabbitMQ,简化与...
Python RabbitMQ 是一种基于AMQP(Advanced Message Queuing Protocol)的消息中间件,它允许不同的进程或服务之间进行异步通信,有效地解耦了系统组件。RabbitMQ 提供了一个可靠的平台,使得应用程序能够通过消息...