2011-12-29 1 views
1

Я использую PICloud REST API для запуска фоновой задачи из Google Appengine (GAE). Моя функция PiCloud возвращает байт строку GAE следующим образом:Как я могу вернуть blob (bytestring) из PiCloud в Google Appengine?

результат = numpy.asarray (обр, numpy.float32) .ToString()
возврата pickle.dumps (bz2.compress (результат))

Это работает нормально, за исключением того, что, когда строковый «результат» большой (24 МБ является типичным значением), травление удаляет возвращенное изображение в размере, превышающем ограничение на 32 МБ для ответов на выборку GAE URL, даже при сжатии bz2. Я пробовал использовать json.dumps(), но он не работает. Есть ли способ вернуть blob, который не расширяет его?

+0

Я должен был более внимательно изучить документацию REST API. Решение состоит в том, чтобы публиковать функцию PiCloud с out_encoding = 'raw' cloud.files.publish (function, 'function', out_encoding = 'raw') Результат затем возвращается как строка без заголовка JSON, но с Content-Type: application/octet-stream – MortCanty

ответ

0

Боюсь, вам придется найти способ разбить его на отдельные запросы. Проблема заключается не столько в PiCloud; это просто, что GAE имеет свои жесткие ограничения.

Вы можете использовать cloud.files, чтобы сохранить файл на сервере. Затем извлеките его в куски.

+0

Thanks Ken. Квота ответов 32MB URLFfetch для GAE подходит для меня. Моя проблема заключалась в том, как отправлять двоичные данные, и я упустил из виду ключевое слово out_encoding для files.publish(), см. Выше. – MortCanty

 Смежные вопросы

  • Нет связанных вопросов^_^