Azure Функция расхода потокового большого файла молча ошибка 500 - PullRequest
0 голосов
/ 01 мая 2020

Я использую Azure Функции и наткнулся на проблему.
При запросе большого количества данных из внешнего источника кажется, что поток закрыт. Я упростил приведенный ниже пример настолько просто, насколько смогу, и он молча завершится ошибкой и вернет 500. Под молчанием я подразумеваю, что в Application Insights нет ошибок, которые я вижу, и нет способа узнать проблему.

Это работает локально как функция azure.

Есть ли какое-то ограничение на данные, которые можно прочитать? Это не занимает много памяти (70 МБ или около того локально). Так что я действительно бился головой об стену за последние два дня. Любая помощь приветствуется!

[FunctionName("FeedDownloads")]
public HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "get" )]HttpRequestMessage req,
  ILogger log)//, [FromQuery]string format = "", [FromQuery]bool debug = false)
{
  System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("{large 1.5GB gzipped file}");
  webRequest.AutomaticDecompression = System.Net.DecompressionMethods.GZip;
  var webRequestResponse = webRequest.GetResponse();

  var res = req.CreateResponse(HttpStatusCode.OK);
  res.Content = new StreamContent(webRequestResponse.GetResponseStream());
  res.Content.Headers.ContentType = new MediaTypeHeaderValue(webRequestResponse.ContentType);
  return res;
}

1 Ответ

0 голосов
/ 05 мая 2020

Azure Функции не предназначены для долгосрочной связи с клиентскими устройствами. Большие длительные функции могут вызвать непредвиденные проблемы с тайм-аутом. Есть несколько других проблем, которые вы должны принять к сведению, прежде чем что-либо. И это выдержка из официальной документации functions-best-Practices . Функции должны быть без состояний и идемпотентными, если это возможно. Свяжите любую необходимую информацию о состоянии с вашими данными. Например, обрабатываемый заказ, скорее всего, будет иметь ассоциированного члена состояния. Функция может обрабатывать заказ на основе этого состояния, а сама функция остается без состояния.

...