Python:分派在线处理大量实时数据流

问题描述

我有一些大量数据流进入不同的网络套接(传感器数据 - 每月数 TB),为此

我想保证存储所有数据,即使在高负载期间也是如此。

所以我想以某种方式将数据发送到我的数据库和实时处理模块(例如 GUI、ML 预测等)

缓冲数据流,以防所述模块的处理速度太慢,以便这些可以负载减少时“赶上”。。 >

我的尝试: 带有队列的 python 线程(来自 Queue 模块或线程模块)但如果它是阻塞的,我不能确保数据不拥塞,如果它是非阻塞的(例如 asyncio.Queue),我会遇到竞争条件并且事情会爆炸。

所以也许我应该使用某种回调方法,但我不知道要寻找什么。我希望这个问题不是太模糊。 如果有人指出我可以尝试的内容,最好仅使用 python,那确实对我有很大帮助,即使这只是一个想法。

解决方法

所以也许我应该使用某种回调方法,但我不知道该寻找什么。

看起来您需要一个 Future

我尝试过的:带有队列的 python 线程(来自 Queue 模块或线程模块)但如果它阻塞,我不能确保数据不拥塞,如果它非阻塞(例如 asyncio.Queue)我得到竞争条件和事情发生了。

您可以尝试使用Queue的非阻塞方法:

并在捕获 queue.Emptyqueue.Full 异常时查询数据库。