在 celery 任务上禁用缓存

Disable caching on celery task

我有一个具有多个任务的 celery 链,其中一个任务是提取一个 tar 文件并返回在该 tar 文件中找到的 JSON。在链完成时,pylibmc 引发 error 37 from memcached_set: SUCCESS,这意味着与该任务键关联的 memcached 值大于 1MB。

此错误不会影响链的数据完整性,但我真的不想将此数据写入缓存,因为它实际上永远不会被再次使用。

我查看了 Celery 文档,但没有发现任何有助于在特定任务上禁用缓存的内容。如有任何帮助,我们将不胜感激。

您可以使用CELERY_IGNORE_RESULTTask.ignore_result不存储结果。该值仍然返回给链中的函数,它们只是没有持久保存到缓存中。这是一个使用 ignore_result

的例子
@task(ignore_result=True)
def your_task():
    # your code here

文档:http://docs.celeryproject.org/en/latest/reference/celery.app.task.html#celery.app.task.Task.ignore_result

博客 post 为我指明了正确的方向:https://www.caktusgroup.com/blog/2014/09/29/celery-production/