Untitled

 avatar
unknown
python
2 years ago
1.3 kB
20
Indexable
def foo():
    # тут может быть запрос в базу/api
    time.sleep(1)
    return {"result": True}

@app.task(bind=True)
def debug_task(self):
    start = datetime.datetime.now().timestamp()
    for i in range(10):
        foo()
    result  = f"working time {datetime.datetime.now().timestamp() - start}"
    print(result)

>> [2022-11-20 11:31:13,899: WARNING/ForkPoolWorker-4] working time 10.01050615310669


from celery import group

@app.task()
def foo():
    # тут может быть запрос в базу/api
    time.sleep(1)
    return {"result": True}

@app.task(bind=True)
def debug_task(self):
    start = datetime.datetime.now().timestamp()
    # тут создаём группу из тасок, которые будут выполняться воркерами параллельно
    job = group(foo.s() for i in range(10))
    result = job.apply_async()
    result.ready()
    print(result.get())
    print(datetime.datetime.now().timestamp() - start)
    
    
>> [{'result': True}, {'result': True}, {'result': True}, {'result': True}, {'result': True}, {'result': True}, {'result': True}, {'result': True}, {'result': True}, {'result': True}]
>> 3.585052013397217


Editor is loading...