sns+sqs通信变得简单
razemax的Python项目详细描述
剃须刀
使用aws sns+sqs进行python服务的异步通信
文档
内存事件管理器
显示代码
fromrazemax.event_managerimportEventManagerclassNorthKoreaThreatCreatedEvent:def__init__(self,id,target):self.id=idself.target=targetdeftrump_subscriber(event:NorthKoreaThreatCreatedEvent):print(f"North korea will attack us or {event.target}!")EventManager.subscribe(trump_subscriber,NorthKoreaThreatCreatedEvent)EventManager.trigger(NorthKoreaThreatCreatedEvent(0,"Mexico"))
结果:
North korea will attack us or Mexico!
来自sqs
的触发器订户先决条件
在运行消费者之前,必须订阅sns主题的sqs队列
代码
fromrazemax.consumersimportMessageConsumerfromrazemax.driversimportSQSDriverfromrazemax.event_managerimportEventManagerfromrazemax.publisherimportSNSMessagePublisherdefkp_message_to_event(message):# Highly recommended to use Marshmallow to validatereturnNorthKoreaThreatCreatedEvent(message.body['id'],message.body['target_name'])mapper={'KPThreatCreated':kp_message_to_event}aws_settings={'region_name':"",'aws_access_key_id':"",'aws_secret_access_key':"",'endpoint_url':""}queue_driver=SQSDriver.build("korea-threats-queue",aws_settings)MessageConsumer(mapper,EventManager,queue_driver).process_message()publisher=SNSMessagePublisher.build(aws_settings,'korea-topic')publisher.publish('KPThreatCreated',{'id':21,'target_name':'Portugal'})
结果:
North korea will attack us or Portugal!
安装(TOdo)
pip install git@github.com/transporter
运行测试
要运行端到端测试,请执行:
make unit-tests
make integration-tests
作者
- 杰罗·瓦迪洛(@jairovadillo)
许可证
这个项目是在麻省理工学院的许可下授权的-详细信息请参见LICENSE.md文件