gpt4 book ai didi

Python:基于文件的线程安全队列

转载 作者:行者123 更新时间:2023-11-28 18:52:50 25 4
gpt4 key购买 nike

我正在用 Python 创建一个应用程序(应用程序 A),它监听端口、接收 NetFlow 记录、封装它们并将它们安全地发送到另一个应用程序(应用程序 B)。应用程序 A 还检查记录是否已成功发送。如果没有,则必须保存它。应用程序 A 等待几秒钟,然后尝试再次发送等。这是重要的部分。如果发送不成功,记录必须被存储,但同时更多的记录会到达,它们也需要被存储。做到这一点的理想方法是队列。但是我需要这个队列在文件中(在磁盘上)。例如,我发现这段代码 http://code.activestate.com/recipes/576642/但它“打开时,将完整文件加载到内存中”,而这正是我想要避免的。我必须假设这个包含记录的文件最多有几个 GB。

所以我的问题是,您建议将这些记录存储在什么位置?它需要处理大量数据,另一方面,如果它不是太慢那就太好了,因为在正常事件期间,一次只保存一条记录,并立即读取和删除。所以基本状态是一个空队列。而且它应该是线程安全的。

我应该使用数据库(dbm、sqlite3..)还是 pickle、shelve 或其他东西?

我对此有点困惑...谢谢。

最佳答案

您可以使用 Redis 作为数据库。它非常非常快,排队非常好,并且可以通过几种方式将其状态保存到磁盘,具体取决于您想要的容错级别。作为一个外部进程,您可能不需要让它使用非常严格的保存策略,因为如果您的程序崩溃,所有内容都保存在外部。

看这里http://redis.io/documentation ,如果您想了解有关如何在 Redis 中执行此操作的更多详细信息,我很乐意详细说明。

关于Python:基于文件的线程安全队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9648894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com