Отправка ~ 20 тыс. Сообщений в очередь хранилища Azure из функций привязки Azure истекает и никогда не отправляет ни одного сообщения. Почему? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть функция таймера 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 часов, что кажется странным при сравнении.

Как это могло занять так много времени?

Есть ли какие-либо предостережения, о которых я мог не знать?

...