芹菜连接器
celery-connectors的Python项目详细描述
芹菜接头
芹菜 是处理来自消息队列代理(如redis或rabbitmq)的消息的极好框架。如果您有一个包含json或pickled消息的队列,需要使用和处理这些消息,那么希望这个存储库能够帮助您解决问题。
它有多个使用芹菜、芹菜bootsteps、kombu和kombu mixins设置工作发布者-订户消息传递工作流的示例。这些示例的重点是寻找一个起点,以优化高可用性+性能+降低消息丢失的风险(停靠的芹菜bootstep rabbitmq订户可以在90秒内用3个工人处理大约 100000条消息)。通过使用附带的Docker容器和附带的负载测试,您可以开始检查解决方案是否不会在停电期间半夜叫醒您。
下面的每个示例都可以作为docker容器运行,其中包含 编写目录中的docker compose文件。请注意,这些docker compose步骤是可选的,下面文档中的消费者计数仅适用于非dockerized存储库版本。
下面是json到芹菜ecomm中继的实际例子。通过使用docker compose,您可以使用容器监视工具对资源和吞吐量进行基准测试,以确定您的部署足迹并解决瓶颈。
我为什么在乎?
- 您想从队列中读取json或pickled消息,并让一个框架处理所有现成的扩展和部署方面吗?
- 是否需要一种不设置任务结果后端(mongo)的简单方法来读取队列?
- 是否要将Windows Python客户端连接到后端Linux系统或群集?
- 是否要通过SQS与所有AWS VPC后端通信?
- 是否希望通过消息队列后端将python和非python技术粘合在一起?
- 你想用python 2和python 3吗?
如何开始?
设置virtualenv
如果您想使用python 2:
virtualenv venv && source venv/bin/activate && pip install celery-connectors
如果要使用python 3:
virtualenv -p python3 venv && source venv/bin/activate && pip install celery-connectors
确认PIP已安装
pip list | grep celery-connectors
启动容器
# if you do not have docker compose installed, you can try installing it with: # pip install docker-compose start-redis-and-rabbitmq.sh
或者,如果Docker版本和操作系统支持容器卷装载,则可以使用以下命令将redis和rabbitmq消息和数据持久化到磁盘:
./start-persistence-containers.sh
检查redis和rabbitmq容器是否正在运行
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 913e8092dbde mher/flower:latest "/usr/local/bin/py..." 35 seconds ago Up 35 seconds celflowerredis b6983a1316ba rabbitmq:3.6.6-management "docker-entrypoint..." 35 seconds ago Up 34 seconds 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, 15671/tcp, 0.0.0.0:25672->25672/tcp celrabbit1 52cb4c511d61 redis:4.0.5-alpine "docker-entrypoint..." 35 seconds ago Up 34 seconds 0.0.0.0:6379->6379/tcp, 0.0.0.0:16379->16379/tcp celredis1 202bdaf70784 mher/flower:latest "/usr/local/bin/py..." 35 seconds ago Up 35 seconds celflowerrabbit