Как реализовать в скрипте таймаут для запросов BigQuery?
Здравствуйте. Подскажите, как можно реализовать таймаут в скрипте при выполнении запроса в BigQuery?
Суть такова - на сервере по крону запускается баш-скрипт, который производит работу с таблицами. Всегда запрос выполнялся в пределах 3-5 минут, но в один день, по непонятной причине, один запрос повис на 6 часов и упал по внутреннему таймауту гугла.
Хотелось бы отслеживать такую ситуацию, чтоб при повисании запроса его можно было перезапустить. Отслеживать запущен скрипт или нет - не подходит, т.к. при килле скрипта и даже самого запроса по pid'у, он в гугле продолжает выполняться.
Тестировал скриптом на питоне с добавлением параметра 'query.timeout_ms = 100' и 'query.timeoutMs = 100' - не сработало, видимо в таком виде это не поддерживается.
Подскажите, может кто сталкивался с такой задачей, как лучше поступить?
Вытягивать job_id при выполнении запроса, и в случае его зависания - отменять? Или есть какой-то другой способ?
В общем, реализовал малость костыльным, но рабочим способом.
На питоне запускаю запрос, и вписываю вложенные циклы, первый проверяет статус задания по job_id, второй отсчитывает время (конструкция a or b в питоне работает не совсем так, как хотелось бы). Если за указанное время запрос завершился, то все ок, если нет, то он убивается через client.cancel_job.