2014-06-29 7 views
6

procedura attuale per servire immagine è la seguente:GAE ancora in servizio immagine dal cloud storage di Google dopo aver chiamato delete_serving_url e l'eliminazione di file

  1. immagine Store su cloud storage Google
  2. Get blob_key: google.appengine.ext.blobstore.create_gs_key(filename)
  3. Get url : google.appengine.api.images.get_serving_url(blob_key,size=250,secure_url=True)

Per rimuovere l'immagine, dopo aver ottenuto il blob_key:

  1. Delete url di servizio: google.appengine.api.images.delete_serving_url(blob_key)
  2. Cancella file di cloud storage di Google: 'cloudstorage.delete (nome del file)'

Problema

Il problema è che l'URL sia continua a funzionare per un periodo di tempo indefinito, anche se l'immagine sottostante non esiste più su Google Cloud Storage. La maggior parte delle volte l'url restituisce 404 in ~ 24 ore, ma ho visto anche 1 immagine che ora sta ancora servendo (~ 2wks).

Quali sono le aspettative sulla tempestività della chiamata delete_serving_url? Qualche alternativa per cancellare l'url più velocemente?

+0

Hai impostato l'intestazione Cache-Control sull'oggetto? – jterrace

+0

Sto utilizzando la funzione GCS Client Library (gcs.open) per creare l'oggetto [link] (https://developers.google.com/appengine/docs/python/googlecloudstorageclient/functions#open), ma non è stato possibile specificare il cache-Control. Lo supporta? – legrisdev

+0

Errore da parte mia, stavo usando l'opzione come 'x-goog-cache-control', mentre aveva bisogno di' cache-control'. Tuttavia, quando si crea il file usando 'cloudstorage.open (filename, 'w', content_type = mimetype, options = {'cache-control': 'no-cache'})', e quindi passando attraverso la procedura descritta sopra l'url funziona ancora dopo 1 ora. Pensieri? – legrisdev

risposta

0

Posso rispondere a una delle tue due domande. Sfortunatamente, è quello meno utile. :/

Quali sono le aspettative sulla tempestività della chiamata delete_serving_url?

Guardando la documentazione Java per getServingUrl, è chiaramente indicato che ci vorranno 24 ore, come avete osservato. Non sono sicuro del motivo per cui la documentazione di Python lascia questo punto.

Se si desidera interrompere la pubblicazione dell'URL, eliminare la chiave blob sottostante. Questo richiede fino a 24 ore per avere effetto.

La documentazione non spiega il motivo per cui una delle immagini sarà ancora pubblicata dopo 2 settimane.

È anche interessante notare che non fanno riferimento allo deleteServingUrl come parte del processo per interrompere la pubblicazione di un BLOB. Questo mi suggerisce che il passaggio (1) del tuo processo per "cancellare l'immagine" non è necessario.

Problemi correlati