从AMQP用芹菜消耗json DATA

时间:2015-03-26 14:16:55

标签: python json celery amqp pika

我遇到网络分析的技术问题。

Netflow流量由PMACCT收集并将此流量发送到rabbitMQ进行分析。 分析将通过python脚本完成,添加一些字段,如dns ptr和其他网络信息。

我用pika编写了一个自定义的消费者脚本,但我的表现不佳。我曾尝试使用python-multiprocessing来提高性能,但Celery的性能会更高(我猜)。

您知道我是否可以使用Celery来使用这些数据(由PMACCT发送和序列化)?数据格式是一个带字段的简单JSON对象(格式与Celery任务格式不匹配)。其他图书馆可以帮助我吗?

最终目标是在多个服务器(流量为几千兆字节)上对流量分析进行负载均衡。

1 个答案:

答案 0 :(得分:1)

我发布此评论作为评论,但我认为我会将其编译为答案。

Celery应该可以处理json数据。

至于性能我假设您正在使用Pika BlockingConnection模块。这是一个非常慢的实现,是crippled with bugs。如果您希望将性能更改为AMQP库的C实现,例如librabbitmq应该可以大幅加快速度,librabbitmq的一个优点是它可以与Celery一起使用。

librabbitmq的缺点是它不是线程安全的。有一些线程安全的替代品可用;比如我自己的AMQP-Storm,或来自pika维护者的Rabbitpy