问题描述
views.py
urls=["https//:.....com,https//:.....com,etc.."]
for i in urls:
r=process.delay(i)
当我调用 celery 任务时,它会执行单独的任务。如何在单个 celery 任务中执行一组列表?
tasks.py
@app.task
def process(url):
r = requests.get(url,allow_redirects=True)
return r
解决方法
您可以将一组 URL 甚至整个列表传递给 celery 任务。但这没有多大意义,因为我们实际上并没有利用并行的传出请求,因为每个 URL 都将被一个接一个地串行访问。
views.py
urls=["https//:.....com","https//:.....com",...]
r = process.delay(urls)
tasks.py
@app.task
def process(urls):
results = []
for url in urls:
r = requests.get(url,allow_redirects=True)
results.append(r)
return results