Запуск функции python асинхронно, без блокировки функции вызывающего абонента (и без необходимости результата) - PullRequest
1 голос
/ 06 марта 2020

Мне нужно сделать длительный шаг предварительной обработки POST-запросов к заданному маршруту (я использую Django). Это прочитает набор данных, изменит некоторые данные и перезаписает их на диск (это может занять пару минут). Мне не нужен результат этой функции, я просто хочу выполнить его асинхронно и немедленно отправить HTTP-ответ, не дожидаясь его завершения.

В настоящее время, как это, он говорит подпрограмму "preprocess_dataset_asyn c" никогда не ожидается и не выполняет его полностью.

@require_POST
def preprocess_dataset(request, f_path=''):
    # ...
    preprocess_dataset_async(f_path, data)
    return HttpResponse('Request is being handled in the background', status=200)

async def preprocess_dataset_async(f_path, preprocess_args):
    # ...
    await stuff
    # ...

Каков наилучший способ выполнить эту задачу в фоновом режиме, не блокируя функцию вызывающего абонента?

1 Ответ

0 голосов
/ 06 марта 2020

threading может быть возможным решением для этого.

Но лучшим и дальновидным решением было бы введение Celery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...