Мне нужно написать кучу задач, где каждая задача должна запрашивать внешний веб-сервис. Веб-служба всегда отвечает статусом 202 ACCEPTED и указывает в заголовке Location на URI, где результат может быть опрошен. Время, необходимое для доставки этого веб-сервиса, может варьироваться от 2 секунд до минуты. Мне было интересно, как лучше всего запрограммировать мою задачу из сельдерея. Сейчас я отправляю запрос и запускаю цикл while, пока не опрошу результат, например:
while True:
result = poll_webservice()
if result:
break
else:
time.sleep(5)
[ continue with the rest of the task ]
Хотя это, безусловно, работает, мне это кажется очень грубым, и я также блокирую работника сельдерея, пока результат не будет опрошен. Есть ли лучший подход?