Python 芹菜消耗整个记忆

Python 芹菜消耗整个记忆,python,celery,Python,Celery,我有一个关于芹菜的问题 我正在向任务队列发送大量数据 我只是尝试了这么多的任务数据,它不适合我的记忆。 结果是芹菜被杀死,因为它使用了整个系统内存 消息不会写入磁盘(代理rabbitmq),但 一切就绪 我的任务如下所示: group(some_iterator).apply_async() 芹菜是否首先尝试序列化整个数据(我正在使用pickle),然后将其发送到任务队列 如果我运行它,可以看到任务写入磁盘的数据就越少 谢谢你的帮助 我发现了实现这种行为的可能性: result_group =

我有一个关于芹菜的问题

我正在向任务队列发送大量数据

我只是尝试了这么多的任务数据,它不适合我的记忆。 结果是芹菜被杀死,因为它使用了整个系统内存

消息不会写入磁盘(代理rabbitmq),但

一切就绪

我的任务如下所示:

group(some_iterator).apply_async()
芹菜是否首先尝试序列化整个数据(我正在使用pickle),然后将其发送到任务队列

如果我运行它,可以看到任务写入磁盘的数据就越少


谢谢你的帮助

我发现了实现这种行为的可能性:

result_group = GroupResult(results = [])
for task_args task_arg_generator:
    task = analyze_task.delay(*task_args)
    result_group.add(task)


result_group.get()
# or :
result_group.join_native()
这将序列化并单独发送每个任务,并将其收集到ResultGroup中,ResultGroup可用于检索组结果

但我选择的解决方案是将数据存储在数据库中,让工作人员通过id获取数据


希望这能帮助一些面临同样问题的人

如果您要向芹菜任务发送大量数据,最好将其存储在某个数据库中,并只向芹菜任务发送ID列表。当任务运行时,进行SQL查询,检索必要的数据,同时处理并保存结果回数据库。
result_group = GroupResult(results = [])
for task_args task_arg_generator:
    task = analyze_task.delay(*task_args)
    result_group.add(task)


result_group.get()
# or :
result_group.join_native()