python - 使用 celery 使用 AMQP 中的 json 数据

标签 python json celery amqp pika

我在网络分析方面遇到技术问题。

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

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

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

最终目标是在多个服务器(许多 GB 的流量)上对流量分析进行负载平衡。

最佳答案

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

Celery处理 json 数据应该没问题。

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

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

关于python - 使用 celery 使用 AMQP 中的 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280797/

相关文章:

python - cProfile 似乎覆盖了 `__file__` 的正常值,如何适应?

python - 使用串口通过 Arduino 将多个值发送到 Raspberry

javascript - 我如何使用 JavaScript 转义 JSON 字符串中的 Unicode 字符?

flask - 带create_app,SQLAlchemy和Celery的 flask

python - 生成器在 SymPy 中使用具有常数多项式的 Sum 所需的误差

python - 使用 range 显示某个区间内的数字

json - 我如何访问angular2中嵌套的json数据

python - 检索 celery-beat 任务结果

django - 如何在 Heroku 上部署带有 Channels 和 Celery 的 Django?

python - 如何找到第一次调用该函数的位置并相应地返回 None ?