2013-11-12 3 views
5

Я разрабатываю приложение на Python Google App Engine, и я использую BlobStore для хранения данных изображений.Как использовать производство BlobStore в сервере разработки (Google App Engine)

Я скопировал всю информацию о своей базе данных на свой локальный хост, чтобы настроить локальную среду разработки, но я хочу использовать образы Blobs с моего сервера Production (поэтому мне не нужно копировать все файлы на локальный компьютер).

Когда я вызываю images.get_serving_url(), чтобы получить url изображения, он возвращает локальную ссылку на него, которая не существует (поскольку все изображения находятся на сервере prod).

Есть ли способ настроить класс изображений на мой prod-сервер? Если ответ отрицательный, как я могу перенаправить вызовы с моего dev-сервера, который ударил/_ah/img/на мой prod-сервер?

from google.appengine.api import images 
print images.get_serving_url(page, size=100) 

>> http://0.0.0.0:8080/_ah/img/AMIfv96IySWiIWF-4FRipavsn9xXnkk-EhmNOU0qWZ4y0ORIXj0Ct85C9eXMBdv3JVooWPIm6-2D3U9ffuTtpJEkWh13ZzmmaNKSiu5QMsnk0exNWj7g1OWbpNxcsjtmv52wz94QFQ6xCNz-atycTqfkdDHbX-LWmMqlsrVEs86S4wsAKSNOZZE=s100 

Желательно, чтобы результат этого вызова был моим URL-адресом сервера prod.

ответ

2

То, что вы просите, невозможно.

Ключи изображения blob более или менее генерируются случайным образом. т.е. когда вы загружаете blob в производственный Blobstore, он получает генерируемый ключ.

Невозможно, чтобы разработчик приложений знал ключ для данного изображения на рабочем сервере. Если вы загрузите одно и то же изображение на dev_appserver, он получит совершенно другой ключ.

Ваши варианты: либо загрузить все изображения локально, либо «загрузить» их на локальный dev-сервер. Если вы используете Google Cloud Storage, инструмент gsutil может помочь: https://developers.google.com/storage/docs/gsutil

Или найдите все URL-адреса blobstore на сервере и вручную сопоставьте их в своем приложении.

+0

Я только что проверил BlobKey в виде particulat файла в моем производстве и разработке сервере, и они одинаковы: Prod: AMIfv95f38Dp3bPn5ftLXS2G0sEwf043tDDeHZA6Dp9qHB8Q5I-uJ7GyOzQ-U-a1_14zgR8s4b2Gn6Osq7arwCUhna5HFEcwAGUJXMM4lW8y_ZJQUQ2Imz5wHRLGQk1EVeW7_KDSydk6B8K-Ql_xE3cBYYEyeEVbqw развитие: AMIfv95f38Dp3bPn5ftLXS2G0sEwf043tDDeHZA6Dp9qHB8Q5I-uJ7GyOzQ-U a1_14zgR8s4b2Gn6Osq7arwCUhna5HFEcwAGUJXMM4lW8y_ZJQUQ2Imz5wHRLGQk1EVeW7_KDSydk6B8K- Ql_xE3cBYYEyeEVbqw Я думаю, это произошло потому, что мы использовали базу данных с производственного сервера для загрузки нашей локальной среды разработки. – Victor

+0

Извините, я пренебрег этим. Вы все еще немного ввернуты, потому что get_serving_url() все еще возвращает очень разные URL-адреса. Вы хотите вызвать get_serving_url() на стороне сервера и сохранить этот URL-адрес в хранилище данных и использовать его на своем dev-сервере. Я знаю, что вы откажетесь от этого, так как вам придется снова загружать данные, но есть преимущество: get_serving_url() работает медленно, и вы улучшите исполнение своего приложения, если будете хранить этот URL-адрес и использовать его на производстве вместо постоянного вызова get_serving_url() – dragonx

+0

Как узнать, если мои Blobs размещены в BlobStore или в Google Cloud Storage? – Victor

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