有没有办法在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
片段的内容。我想我错过了一个关键的拼图。所以,如果你能告诉我如何完成这项工作或指向一个有用的链接,我将非常感激。
谢谢
正如@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