3

我有一个程序可以处理大约 500 000 个文件 {Ai} 并且对于每个文件,它将获取一个定义 {Di} 以进行解析。

目前,每个文件 {Ai} 都由一个专用的 celery 任务解析,并且每次定义文件 {Di} 都被再次解析以生成一个对象。该对象用于解析文件 {Ai}(JSON 表示)。

我想存储定义文件(生成的对象){Di(object)} 以使其可用于整个任务。

所以我想知道管理它的最佳选择是什么:

  1. Memcahe + Python-memcached,
  2. 使用 set(add)/get 接口“存储”对象的长时间运行任务。

对于性能和内存使用,最佳选择是什么?

4

1 回答 1

1

使用 Memcached 听起来像是一个更简单的解决方案 - 任务用于处理,memcached 用于存储 - 为什么使用任务进行存储?

我个人建议使用 Redis 而不是 memcached。

另一种方法是尝试 ZODB - 它以原生方式存储 Python 对象。如果您的应用程序确实受到序列化开销的影响,那么这可能会有所帮助。但我强烈建议使用您针对 JSON/memcached 的实际工作负载进行测试。

于 2015-08-07T12:15:48.937 回答