python - django-celery redis 内存错误

标签 python redis celery django-celery

我正在使用 django+celery 和 redis 作为代理,我的一个任务涉及读取大约 25MB 大小的大文件并返回结果,通过该结果链接另一个任务来处理结果。

由于我对redis不熟悉,所以在这里遇到错误,求助。可能是什么问题?

[2013-06-23 22:45:41,241: ERROR/MainProcess] Unrecoverable error: MemoryError()
Traceback (most recent call last):
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/celery/worker/__init__.py", line 363, in start
    component.start()
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/celery/worker/consumer.py", line 395, in start
    self.consume_messages()
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/celery/worker/consumer.py", line 480, in consume_messages
    readers[fileno](fileno, event)
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/kombu/transport/redis.py", line 770, in handle_event
    self._callbacks[queue](message)
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/kombu/transport/virtual/__init__.py", line 479, in _callback
    self.qos.append(message, message.delivery_tag)
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/kombu/transport/redis.py", line 117, in append
    dumps([message._raw, EX, RK])) \
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/redis/client.py", line 1808, in execute
    return execute(conn, stack, raise_on_error)
  File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/redis/client.py", line 1705, in _execute_transaction
    [args for args, options in cmds]))
MemoryError

不确定它是否提供任何提示,但检查 redis 服务器上的 maxmemory 设置似乎不是问题所在。

redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "3758096384"

最佳答案

看起来内存错误不是在redis端而是在client端(celery worker)

我的猜测是 worker 内存不足

您应该确保 celery 进程实际上可以将来自 redis 的结果分配到内存中。

如果在执行几个任务后发生这种情况,则意味着您没有足够的内存来处理您设置的并发性,或者您正在某处泄漏内存(从 redis 中保留对象的引用)

关于python - django-celery redis 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17262083/

相关文章:

python - 谷歌应用程序引擎,Django : Tables are not made in Google cloud SQL after deployment

azure - azure 上的 redis 跨部署是否持久?

database-design - 分区加权有向图(基于键/值数据库)

slaveof 的 redis 配置集失败

python - celery 节拍 : ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN

django - 完整性错误 : foreign key not present when doing a get_or_create

python - 如何从外键关系创建 Django 表单?

python - 具有冗余 nan 类别的 Pandas groupby

python - Pandas:追加现有的 CSV 文件、额外的列

python - Celery - 最小化内存消耗