Python:基于文件的线程安全queu

2024-05-20 04:07:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

所以我的问题是,你建议把这些记录存储在什么地方?它需要处理大量的数据,另一方面,如果不是太慢的话就更好了,因为在正常的活动中,一次只保存一条记录,并且可以立即读取和删除。所以基本状态是一个空队列。它应该是线程安全的。在

我应该使用数据库(dbm,sqlite3….)还是类似pickle、shelve之类的东西?在

我有点迷恋。。。谢谢您。在


Tags: 文件方法端口代码应用程序http队列记录
1条回答
网友
1楼 · 发布于 2024-05-20 04:07:47

您可以使用Redis作为数据库。它的速度非常快,排队性能令人惊讶,而且它可以以几种方式将状态保存到磁盘,这取决于您想要的容错级别。作为一个外部进程,您可能不需要让它使用非常严格的保存策略,因为如果您的程序崩溃,所有的东西都是从外部保存的。在

请看这里http://redis.io/documentation,如果您想了解在redis中如何实现这一点的详细信息,我很乐意详细说明。在

相关问题 更多 >