[芹菜]:发送许多任务时内存麻烦

时间:2018-03-08 08:00:38

标签: python django memory-leaks celery django-celery

我在许多机器上使用芹菜处理许多任务,但我的内存有问题。 我有一个6 GB文本ID的文件,我读取文件并获取id以将其发送到其他机器上的任务。

 with open(source_file) as file:
    for row in file:
        row = json.loads(row)
        if row['oid']:
            app.send_task(name='test',
                          queue='test',
                          routing_key='test',
                          args=(row['oid'],))

但问题是记忆公羊长大了。当我评论send_task代码时,内存ram是正常的。我想当我发送任务快,内存不释放内存。我的英语不太好

1 个答案:

答案 0 :(得分:0)

1)你可以购买更多的内存

2)你是如此迅速地将任务写入RAM并且另一方的工作人员无法处理它们,那么你可以通过简单的睡眠方法减慢芹菜任务发送者的速度

    if row['oid']:
        app.send_task(name='test',
                      queue='test',
                      routing_key='test',
                      args=(row['oid'],))
        import time
        time.sleep(1) # sleep one second

3)例如,您可以使用Redis仅将row[oid']保存到RAM,而不使用芹菜。远程工作人员将监听该数据(Pub/sub