У меня есть функция таймера Azure, которая должна отправлять ~ 20 тыс. Сообщений в очередь хранилища Azure через выходную привязку. Он начинается с того, что тратит ~ 13 минут на выборку этих сообщений, сериализацию и добавление их в список. Затем список передается в выходную привязку, как в примере кода ниже. По приблизительным оценкам, средний размер сообщения составляет около 14 КБ (учитывая кодировку UTF-16, используемую очередью хранилища Azure) при этом. Однако сообщения никогда не появляются в очереди, и функция в конце концов перестает работать.
Ранее я успешно отправил ~ 25k сообщений в Azure Storage Queue из другой функции в этом проекте. По приблизительным оценкам, средний размер сообщения при этом составлял около 8 КБ. Данные были собраны из базы данных SQL с запросом, который занимает ~ 25 секунд. Если я правильно помню, сообщения заняли несколько минут, чтобы попасть в очередь, но, кроме этого, никаких проблем.
Я также увеличил functionTimeout
в моих host.json
до 6 часов, думая, что это будетустранить проблемы с тайм-аутом ..
В обеих функциях, которые я использую, и привязка вывода называется msg
. Аналогично этому, но с разными источниками данных.
result = []
for item in data_source.get_next_obj():
result.append(json.dumps(item))
msg.set(result)
Общее количество передаваемых данных должно составлять около 150-160% от того, что было отправлено в успешном сценарии, а для завершения требуется более 6 часов, что кажется странным при сравнении.
Как это могло занять так много времени?
Есть ли какие-либо предостережения, о которых я мог не знать?