Python 芹菜块大数据集
我正在尝试使用芹菜的chunks功能将我的iterable数据集划分为若干部分,然后将其发送到芹菜任务进行进一步处理。 我从下面的sqlalchemy调用中得到了一个查询集Python 芹菜块大数据集,python,celery,Python,Celery,我正在尝试使用芹菜的chunks功能将我的iterable数据集划分为若干部分,然后将其发送到芹菜任务进行进一步处理。 我从下面的sqlalchemy调用中得到了一个查询集 query_set = MyModel.query.join(OtherModel).all()) 目前,query_set是一个元组列表。查询结果的长度为40000,并且还在增长 我有另一个函数(芹菜任务),它处理查询集中的数据,它的定义是 @celery_app.task def crunch_qs(query_set
query_set = MyModel.query.join(OtherModel).all())
目前,query_set是一个元组列表。查询结果的长度为40000,并且还在增长
我有另一个函数(芹菜任务),它处理查询集中的数据,它的定义是
@celery_app.task
def crunch_qs(query_set):
. . .
. . .
由于query_set是一个元组列表,我想我可以像这样直接将它传递给crunch_qs
crunched_qs = crunch_qs.chunks(query_set, 5000)()
results = crunched_qs.get()
那是行不通的。这给了我一个意想不到的结果。它将每个查询集的元组中的项目解包,并将它们发送到crunch\qs
。
因此,crunch\u qs
将在第一次迭代时接收**查询集[0],这会引发以下错误
TypeError:crunch_qs()正好接受1个参数(给定10个)
len(查询集[0])=10
我也试过
crunched_qs = crunch_qs.chunks((row,) for row in query_set, 5000)()
results = crunched_qs.get()
这样效果好一点。打字错误消失了。但是,我的crunch_qs
函数现在将每一行(元组)作为参数,而不是长度为5000的元组列表
任何关于如何将元组列表传递给芹菜块的帮助/想法都将不胜感激
提前谢谢