Асинхронное программирование на Python с помощью Dask - PullRequest
0 голосов
/ 17 февраля 2019

Есть ли способ реализовать приведенный ниже пример в 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 выполнить фоновую задачу вДля того, чтобы задача даже началась, ждут блоки.С другой стороны, в Use Cases говорится, что это можно использовать вместо Celery для неблокирующего поведения.Ни один из примеров, которые я мог найти, показал что-то вроде Celery фрагмента.Я думаю, что мне не хватает решающей части головоломки.Поэтому, если бы вы могли показать мне, как это сделать или указать полезную ссылку, я был бы очень признателен.

Спасибо

1 Ответ

0 голосов
/ 20 февраля 2019

Как говорит @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
...