小编kar*_*sch的帖子

Redis Queue + python-rq:正确的模式,以防止高内存使用?

我们目前正在使用我们的Heroku托管的Python应用程序使用Redis.

我们将Redis与python-rq一起用作任务队列,以延迟执行一些时间紧迫的任务.任务是从PostgreSQL数据库中检索一些数据并将结果写回给它 - 因此Redis实例中根本没有保存有价值的数据.我们注意到,根据执行的作业数量,Redis正在消耗越来越多的内存(增长@ 10 MB /小时).CLI上的FLUSHDB命令修复此问题(将其降至约700kB的RAM),直到RAM再次满为止.

根据我们的(未更改的标准)设置,作业结果保持500秒.随着时间的推移,一些作业当然会失败,并且它们会被移动到失败的队列中.

  • 我们必须采取哪些不同的方式才能使用稳定的RAM来完成任务?
  • RAM消耗来自哪里?
  • 我可以完全关闭持久性吗?
  • 从文档我知道500秒TTL意味着一个密钥然后"过期",但没有真正删除.此时密钥是否还消耗内存?我可以以某种方式改变这种行为吗?
  • 它是否与失败的队列有关(显然没有TTL附加到作业,这意味着(我认为)这些是永久保存的)?
  • 只是好奇:当将RQ纯粹用作队列时,Redis DB中保存了什么?它是实际的可执行代码还是只能找到要执行的函数的位置?

很抱歉这些漂亮的noobish问题,但我对排队的话题不熟悉,经过2天以上的研究,我已经达到了一个我不知道下一步要做的事情.谢谢,KH

python asynchronous heroku redis redistogo

11
推荐指数
1
解决办法
2014
查看次数

标签 统计

asynchronous ×1

heroku ×1

python ×1

redis ×1

redistogo ×1