Выбор времени для выгрузки задач фоновому работнику является несколько субъективным вопросом, но в случаях, подобных вашему примеру выше, запросы выполняются в том же процессе или потоке, что и веб-запрос.
То, что вы показываете выше, скорее всего, займет несколько миллисекунд. С другой стороны, если у вас есть запрос, выполнение которого занимает 10 секунд, разумно подумать о том, должна ли это быть фоновая задача, и, конечно же, если она занимает минуты.
Еще одно замечание, которое я хотел бы отметить: пока вы запускаете _get_player_name
в качестве задачи Celery, функция get_player_name
блокирует ожидание ее завершения. Если ваш веб-обработчик вызывает последнюю функцию, процесс / поток веб-сервера все еще блокируется на время выполнения задачи.
Когда у меня есть конечная точка, которая запускает фоновое задание, я создаю запись задания и возвращаю идентификатор этой записи во внешний интерфейс. Затем веб-интерфейс может периодически опрашивать, используя этот идентификатор задания, чтобы узнать, завершена ли задача. В этом случае вы также можете использовать веб-сокеты, если ваш сервер поддерживает это.