是否可以(和/或有效)使用 Postgres 的 hstore 作为 celery 的代理?
我被限制(没有一些非常令人信服的理由)使用 Postgres 数据库。我有一个带有芹菜任务的 django 应用程序。目前我正在使用标准数据库支持,但 celery 文档强烈建议不要使用这种方法来处理非常小的任务队列之外的任何事情。当我遇到一些关于 Postgres 的 hstore 功能的信息以及它提供与 redis 等效功能的建议时,我正在考虑安装 redis。
不过,我还没有看到任何关于将 hstore 专门用于 celery 的信息,如果它真的可以替代 redis,这似乎很奇怪。查看
https://github.com/celery/celery/blob/master/celery/backends/base.py
上的 celery 后端代码,
看起来基本的 celery KeyValueStoreBackend 是一个非常简单的 api:
def get(self, key):
raise NotImplementedError('Must implement the get method.')
def mget(self, keys):
raise NotImplementedError('Does not support get_many')
def set(self, key, value):
raise NotImplementedError('Must implement the set method.')
def delete(self, key):
raise NotImplementedError('Must implement the delete method')
def incr(self, key):
raise NotImplementedError('Does not implement incr')
但在我可能花大量时间在这之前,似乎值得问一下我是否遗漏了一些反对使用 hstore 实现这个 API 并将其用作 celery 后端的东西。
例如。celery 是否具有此 API 未捕获的要求(例如原子性、可伸缩性、负载下的可靠性)?使用 hstore 实现这一点会不会对现有的数据库后端提供实质性的改进?我对芹菜相当陌生,从未使用过 hstore,所以我不确定我忽略了什么(如果有的话)。