使用Postgres的hstore作为芹菜经纪人有可能(和/或是否有效)?与芹菜一起使用Postgres hstore?
我受限制(缺少一些非常有说服力的理由)使用Postgres数据库。我有一个芹菜任务的Django应用程序。目前我正在使用标准的数据库支持,但芹菜文档强烈建议,除了非常小的任务队列之外,不要使用这种方法。当我遇到有关Postgres的hstore功能的一些信息时,我正在考虑安装redis,并建议它提供与redis等效的功能。
我还没有看到专门为芹菜使用hstore的任何内容,但是,如果它真的可以替代redis,这看起来很奇怪。在
https://github.com/celery/celery/blob/master/celery/backends/base.py
它看起来像基地芹菜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并将其用作芹菜后端的争论。
例如。芹菜是否具有此API未捕获的要求(例如原子性,可扩展性,负载下的可靠性)?使用hstore实现这个功能是否会对现有的数据库后端进行实质性的改进?我对芹菜相当陌生,从不使用hstore,所以我不确定我忽略了什么(如果有的话)。
谢谢 - 我显然没有得到关于什么hstore的正确图片(希望我看到了“数据库字段中的哈希映射”这个词组,解释了这一切),或者芹菜如何使用redis进行排队这听起来好像它并不是真正通过关键值存储来获得,就像pubsub功能绑定在一起)。不确定PGQ,因为它似乎需要合作消费者,但我一定会检查出来。 – Adam
@Adam你能链接到你正在阅读的地方吗?有一些不好的信息在浮动,我真的很想从源头上解决它。 –
@Adam for publish/subscribe你可能想查看PostgreSQL的'LISTEN'和'NOTIFY' –