Вопрос по – 503 и 400 при загрузке изображений в Google App Engine

5

Недавно я столкнулся с двумя проблемами при загрузке файлов в приложение Java gae. Я использую технику, описанную вBlobstore Doc.

  1. With regular files, occasionally (let's say 15% of times) the client receives a "503 Service Unavailable".
  2. With high resolution images (example 7000x10000) the client always receives a "400 Bad Request".

В обоих случаях на сервере не регистрируются сообщения об ошибках, BLOB-объекты пишутся правильно, но URL-адрес successPath (обратный вызовcreateUploadUrl) никогда не называется. Похоже, что конечная точка GAE, обрабатывающая загрузку, вылетает по некоторым причинам.

Мой клиент - js XMLHttpRequest, завернутый в GWT:

public native void uploadWithXMLHttpRequest(UploadForm uploadForm) /*-{
    var fd = new FormData();
    var files = [email protected]::getFiles()();  
    for (var i = 0; i < files.length; i++) {
        fd.append("uploadFile"+i, files[i]);
    }
    var xhr = new XMLHttpRequest();
    //xhr.upload.addEventListeners... omitted
    xhr.open("POST", [email protected]::getUploadUrl()());
    xhr.send(fd);
}

Есть идеи для возможных причин и решений / обходных путей? Спасибо.

Покажите нам код! В частности, поскольку вы используете JavaScript для отправки своих загрузок. Nick Johnson
Идентификатор приложения: maptoapp. 400 ключевых блоб (400 ответов происходит при загрузке высоких разрешениях картинки): AMIfv96gQvVD3xPl8IAUBZHwESNBAeeyZbxYWJD2BaxI688GkwNJXR6Lg7yx7pX8efb16YskBE7ZUVGYuUkXwSSXJ3uko6OnGKO79EuC-LupVC_gG2CaajOMBhJcQctXzsjI_MPu16ZdorDkGp-uK7c4o6BYqHxlXw 503 ключ блоб (503 ответов происходит своего рода случайным образом с тем же рис, как правило, работает правильно.): AMIfv957XZKBtl5C9RB19nntlrUi4bGfY8EPE8Rfidik0dlD5jPmeGgcLyqc2ye9WICIy063ZMoZRGIQkbVpCTM4EL7dUFzazWz2Irsn14iLKx2uBrJyYhl0qsrvRWxVa_KpMS6BGiH0N1c66XGPlkqoCo9jXPcBsg Я загрузил оба файла прямо сейчас. bebo
Отправьте мне свой идентификатор приложения и ключ блоба для блоба, который, по вашему мнению, был загружен правильно, но ваш URL успеха не был вызван. Stuart Langley
Таким образом, 400 было сгенерировано вашим приложением - вы можете увидеть его в своих журналах (запись имеет метку времени 2012-05-23 23: 37: 44.915). 503 был временной ошибкой с нашей стороны, скорее всего из-за того, что вы используете хранилище данных M / S, а не HRD. Stuart Langley
Привет, Стюарт, я работаю с Bebo, и сейчас у нас действительно неприятности: процент отказов близок к 100%. Я уже работаю над переходом на HRD, но мы сохранили ключи как String, и там было много кода для написания. Есть ли другой способ решить эту проблему? Michele Orsi

Ваш Ответ

4   ответа
0

1 Вы загружаете большой файл (& gt; 1 МБ) и пишете все это. Вы должны написать это portinal: 1 write = 1MB.

2 Ваш запрос занимает больше 30 секунд - используйте бэкэнд.

0

поскольку служба хранилища больших двоичных объектов имеет много проблем, поэтому Google пытается перенести использование из Blob в службу поддержки GCS.

Я полагаю, что разрешение изображения не может превышать 8000 в хранилище BLOB-объектов движка приложения, что и является причиной его возникновения.

0

когда мы записываем информацию о загрузке в ваше хранилище данных. Поскольку вы используете хранилище данных M / S, время от времени ожидаются временные ошибки. Я предлагаю вам преобразовать ваше приложение в HRD, чтобы минимизировать вероятность ошибок, связанных с записью данных загрузки в ваше хранилище данных.

Ошибка 400 сгенерирована вашим приложением & amp; в журналах вашего приложения.

Error: User Rate Limit Exceeded bebo
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded bebo
1

открытом другим пользователем с такой же проблемой:https://code.google.com/p/googleappengine/issues/detail?id=7619 (кстати, система отслеживания ошибок имеет функцию «запуск», которая позволяет вам голосовать за тикет и получать уведомления)

Error: User Rate Limit Exceeded

Похожие вопросы