使用 Celery,在单个 celery 任务中执行 URL 列表。可能吗?

Using Celery, execute a list of URLs in a single celery task. Is it Possible?

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