我有一个查询。
messages = Message.objects.all()
我会将结果“消息”发送到被调用的函数bulk_send()
,但这一次只能接受来自此查询的500条消息
所以我在想,有没有办法将结果分成批次,例如
bulk_send(messages first 500)
bulk_send(messages next 500)
bulk_send(messages the remaining )
但是这不起作用,因为我永远不知道消息中有多少结果可能有200或100万,无论是bulk_send还是在任何给定时间都只接受500.
答案 0 :(得分:1)
total = Message.objects.all().count()
for i in xrange(0,total,500):
batch = Message.objects.all()[i:500]
答案 1 :(得分:1)
all_messages = Message.objects.all()
if all_messages.count() == 0:
return
n = all_messages.count() / 500
for i in range (n if n else 1):
messages = all_messages[i*500:(i+1)*500]
bulk_send(messages)