问题描述
我有一些大量数据流进入不同的网络套接字(传感器数据 - 每月数 TB),为此
我想保证存储所有数据,即使在高负载期间也是如此。
所以我想以某种方式将数据发送到我的数据库和实时处理模块(例如 GUI、ML 预测等)
它缓冲数据流,以防所述模块的处理速度太慢,以便这些可以在负载减少时“赶上”。。 >
我的尝试: 带有队列的 python 线程(来自 Queue 模块或线程模块)但如果它是阻塞的,我不能确保数据不拥塞,如果它是非阻塞的(例如 asyncio.Queue),我会遇到竞争条件并且事情会爆炸。
所以也许我应该使用某种回调方法,但我不知道要寻找什么。我希望这个问题不是太模糊。 如果有人指出我可以尝试的内容,最好仅使用 python,那确实对我有很大帮助,即使这只是一个想法。
解决方法
所以也许我应该使用某种回调方法,但我不知道该寻找什么。
看起来您需要一个 Future
。
我尝试过的:带有队列的 python 线程(来自 Queue 模块或线程模块)但如果它阻塞,我不能确保数据不拥塞,如果它非阻塞(例如 asyncio.Queue)我得到竞争条件和事情发生了。
您可以尝试使用Queue
的非阻塞方法:
并在捕获 queue.Empty
或 queue.Full
异常时查询数据库。