【发布时间】:2012-03-27 18:42:47
【问题描述】:
我正在 Python 中创建一个应用程序(应用程序 A),它侦听端口、接收 NetFlow 记录、封装它们并将它们安全地发送到另一个应用程序(应用程序 B)。应用 A 还会检查记录是否成功发送。如果没有,则必须保存。应用程序 A 等待几秒钟,然后尝试再次发送,等等。这是重要的部分。如果发送不成功,则必须存储记录,但同时还有更多的记录可以到达,也需要存储。理想的方法是排队。但是我需要这个队列在文件中(在磁盘上)。例如,我发现此代码 http://code.activestate.com/recipes/576642/ 但它“打开时,将完整文件加载到内存中”,这正是我想要避免的。我必须假设这个包含记录的文件最多有几个 GB。
所以我的问题是,您建议将这些记录存储在什么位置?它需要处理大量数据,另一方面,如果它不是太慢,那就太好了,因为在正常活动期间,一次只保存一条记录,并立即读取和删除。所以基本状态是一个空队列。它应该是线程安全的。
我应该使用数据库(dbm、sqlite3..)还是 pickle、shelf 之类的东西?
我对此有点困惑......谢谢。
【问题讨论】: