使用Dask在Python中进行异步编程

问题描述 投票:0回答:1

有没有办法在dask中实现下面的例子?

import time

from celery import Celery

app = Celery('celery_blog', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')


@app.task
def sl():
    time.sleep(1)


if __name__ == "__main__":
    sleeper = sl.delay()
    print('submitted')
    print(f"sleeper done: {sleeper.ready()}")
    time.sleep(2)
    print(f"sleeper done: {sleeper.ready()}")

看着http://distributed.dask.org/en/latest/asynchronous.html在我看来,所有的例子都需要await后台任务才能让任务开始,然而,等待阻止。另一方面,在用例中,它表示可以使用它代替Celery进行非阻塞行为。我找不到的例子显示了类似Celery片段的内容。我想我错过了一个关键的拼图。所以,如果你能告诉我如何完成这项工作或指向一个有用的链接,我将非常感激。

谢谢

python asynchronous celery dask nonblocking
1个回答
0
投票

正如@mdurant在评论中所说,你可能正在寻找Dask的期货界面。见https://docs.dask.org/en/latest/futures.html

from dask.distributed import Client
client = Client()

future = client.submit(function, *args, **kwargs)
future.result()  # block then get result
© www.soinside.com 2019 - 2024. All rights reserved.