我有一个类似于:
def long_running_with_more_values(start, stop):
headers = get_headers.delay(start, stop)
insert_to_db.delay(headers)
该功能是对从网络并行请求的数据进行批处理。get_headers + insert_to_db 正在向消息堆栈触发,并最终由 celery 工作人员处理,因此不会阻塞执行。
它必须处理开始和停止之间的每个数字,但可以将其拆分为部分(范围)。
我发现当范围为 ~20000 时,操作 get_headers 是最佳的,其中 range = (stop - start)
我想知道如何将任意范围拆分为 20000 个组并通过该函数运行每个组,因此我最终会以不同的开始和停止值多次调用该函数,但仍总体覆盖前一个范围。
因此,对于 1 和 100000 的 start 和 stop 的起始值,我希望 get_headers 被调用 5 次,如下所示:
[1,20000][20001,40000][40001,60000][60001,80000][80001,100000]