0

我这边有一个十万级任务,只用一个worker, 并发设到30,用for扔到celery里面执行。但是很快就发现了问题,虽然只有30个在执行,但是处于等待状态的任务对资源的消耗也是巨大的,中途如果变卦想删除任务,一删就得删半个小时,各位有什么好的思路

路飞 1
2019-07-14 提问
2 个回答
0

换种方式,用redis的队列。取一条处理一条。只开八个。

另外你开30个,是否考虑了,多线程并发gil问题?

0

你这种设计显然有问题啊,楼上采用消息队列的方法是一个可取的思路,如果采用redis做MQ,你的celery可以去MQ中消费注册的消息,这样你只需要增删MQ的消息即可

撰写答案

推广链接