`
sillycat
  • 浏览: 2551635 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Python RabbitMQ on Lambda

 
阅读更多
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客户端&管理库.zip

    amqpstorm, 线程安全 python RabbitMQ客户端&管理库 AMQPStorm 线程安全 python RabbitMQ客户端&管理库。 简介 AMQPStorm是一个设计稳定,稳定和线程安全的库。 1

    python rabbitmq

    ### Python与RabbitMQ知识点详解 #### 一、引言 在现代软件开发尤其是分布式系统设计中,消息队列作为实现服务间异步通信的重要工具之一,被广泛应用。其中,RabbitMQ是一款非常流行的消息中间件,支持多种消息...

    Python rabbitMQ如何实现生产消费者模式

    本文将详细讲解如何在Python中使用RabbitMQ来实现生产者消费者模式。 首先,我们需要在本地或服务器上安装RabbitMQ。安装完成后,可以通过Web管理界面或命令行工具`rabbitmqctl`来检查和管理队列。在Python中,我们...

    Python RabbitMQ消息队列实现rpc

    在本文中,我们将深入探讨如何使用Python和RabbitMQ实现远程过程调用(RPC)。RabbitMQ是一种流行的消息中间件,它允许分布式系统中的组件通过消息传递进行通信。RPC模式在Python中通过RabbitMQ实现,可以使得客户端...

    amqpstorm:线程安全的Python RabbitMQ客户端和管理库

    标题和描述中提到的“amqpstorm”是一个专为Python设计的RabbitMQ客户端和管理库,具有线程安全的特性。这意味着它能够在多线程环境中安全地与RabbitMQ服务器进行交互,确保在并发操作时数据的一致性和完整性。 **...

    python RabbitMQ 使用详细介绍(小结)

    上节回顾 主要讲了协程、进程、异步IO多路复用。 协程和IO多路复用都是单线程的。 epoll 在linux下通过这个模块libevent.so实现 ...RabbitMQ也是消息队列,那RabbitMQ和之前python的Queue有什

    RabbitMQ客户连接池的实现

    RabbitMQ客户连接池的实现代码示例

    rabbitmqadmin

    python rabbitmqadmin declare queue name=test auto_delete=false durable=false --username=xxx --password=xxx 查看队列:rabbitmqctl list_queues 或者:python rabbitmqadmin list queues --username=xxx --...

    如何通过Python实现RabbitMQ延迟队列

    因为系统本身一直在用RabbitMQ做异步处理任务的中间件,所以想到是否可以利用RabbitMQ实现延迟队列。功夫不负有心人,RabbitMQ虽然没有现成可用的延迟队列,但是可以利用其两个重要特性来实现之:1、Time To Live...

    rabbitmq_priority_topic_python:rabbitmq 带有优先级和主题功能,可以发送带优先级的物品,带主题的物品接收

    rabbitmq_priority_topic_python rabbitmq 带有优先级和主题功能,可以发送带优先级的物品,带主题的物品接收 确保插件 rabbitmq_priority_queue 已安装并启用。 安装库:python-pika 看这里的情况:你想用queue来...

    rabbitmq-nagios-plugins:基于python的RabbitMq插件集

    rabbitmq-nagios-插件一组基于python的Rabbitmq插件。 安装: easy_install pynagios 将这些脚本复制到$ NAGIOS_HOME / libexec / 配置您的nagios系统。 注意,这些脚本需要HOSTNAME而不是HOSTADDRESS来区分Rabbit...

    Python实现RabbitMQ6种消息模型的示例代码

    ### Python 实现 RabbitMQ 六种消息模型的深入解析 #### 一、引言 RabbitMQ 是一种基于 AMQP(Advanced Message Queuing Protocol)标准的开源消息中间件,广泛应用于分布式系统中作为消息传递的媒介。在实际开发...

    Python通过RabbitMQ服务器实现交换机功能的实例教程

    Python使用RabbitMQ需要Pika库: sudo pip install pika 好了,接下来我们先看交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里...

    离线安装rabbitmq全过程,包含python环境和er环境以及安装包的安装过程

    虽然RabbitMQ本身并不直接依赖Python,但它的管理工具`rabbitmqadmin`是用Python编写的,所以确保系统中已经安装了Python 3是必要的。如果你的系统没有预装Python,可以下载Python的源码包,如`Python-3.8.10.tgz`,...

    flask-rabbitmq:与RabbitMQ pika库结合的简单Python Flask

    flask-rabbitmq是一个框架,简化了python操作Rabbitmq的框架,可以与Flask很好地结合。 因此,您无需考虑基础操作 安装 该项目已提交给Pypi,可通过pip安装: $ pip install flask-rabbitmq 产品特点 开始关注Flask...

    Python操作rabbitMQ的示例代码

    RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 rabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。使用消息中间件利于应用之间的解耦...

    rabbitmq-python-wrap:rabiitmq服务器连接的python封装

    **标题解析:** "rabbitmq-python-wrap" 是一个Python库,专门用于封装RabbitMQ服务器的连接。"rabiitmq服务器连接的python封装"强调了这个库的主要功能,即为Python开发者提供一个方便的接口来操作RabbitMQ,简化与...

    Python RabbitMQ实现简单的进程间通信示例

    Python RabbitMQ 是一种基于AMQP(Advanced Message Queuing Protocol)的消息中间件,它允许不同的进程或服务之间进行异步通信,有效地解耦了系统组件。RabbitMQ 提供了一个可靠的平台,使得应用程序能够通过消息...

Global site tag (gtag.js) - Google Analytics