2014-12-21 11 views
7

Con l'ultimo SDK di GAE (1.9.17), ho seguito tutte le istruzioni per servire le immagini di archiviazione su cloud di google utilizzando le librerie blobstore e le immagini, ma a livello locale mi dà un errore di 500. Distribuendo l'app sul server di produzione, l'elaborazione delle immagini funziona correttamente. Tuttavia, questo è estremamente fastidioso perché ho bisogno di sviluppare localmente, e il mio progetto è intensivo di immagini.Come pubblicare un'immagine di archiviazione cloud google dal server locale?

Questo funziona bene in produzione:

key = blobstore.create_gs_key('/gs/my_bucket/my_folder/my_image.jpg') 
url = images.get_serving_url(key) 

sulla produzione, l'URL al servizio si presenta come:

http://lh6.ggpht.com/ow6Z3PrYyLVdvRDc9cT9I3MB9ug... 

A livello locale, l'URL appare come:

http://0.0.0.0:8080/_ah/img/encoded_gs_file:Z2lmdF9p... 

Il motore di App registri errori dire:

ERRORE 2014/12/21 23: 12: 35.256 blob_download.py:204] Impossibile trovare blob con chiave encoded_gs_file: Z2lmdF9p ...

sto facendo qualcosa di sbagliato? I documenti dicono che servire le immagini localmente dovrebbe funzionare bene dopo l'SDK 1.8. Se non riesco a farlo funzionare, la mia unica soluzione è di mantenere tutte le immagini di produzione (molte GB) ospitate localmente per lo sviluppo.

risposta

1

Vedere this very good repo, che spiega come salvare il file in GCS, nell'SDK di sviluppo o in produzione.

In particolare, per la tua domanda:

# image API supported formats 
    if file_extension in ['jpeg', 'jpg', 'png', 'gif', 'bmp', 'tiff', 'ico']: 
     # High-performance dynamic image serving 
     self.serving_url = images.get_serving_url(self.blobkey, secure_url=True) 
    elif os.environ['SERVER_SOFTWARE'].startswith('Development'): 
     # GCS url: this SDK feature has not been documented yet !!! 
     self.serving_url = '/_ah/gcs%s' % self.gcs_filename 
    else: 
     # GCS url: because of HTTPS we cannot use a cname redirect or use the use_blobstore option 
     self.serving_url = 'https://storage.googleapis.com%s' % self.gcs_filename 

Grazie a @voscausa.