有没有办法实现下面的示例?
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
的片段。我认为我缺少了至关重要的拼图。因此,如果您可以向我展示如何完成这项工作或将其指向有用的链接,我将不胜感激。
谢谢
答案 0 :(得分:0)
正如@mdurant在评论中所说,您可能正在寻找Dask的期货接口。参见this article
from dask.distributed import Client
client = Client()
future = client.submit(function, *args, **kwargs)
future.result() # block then get result