2013-07-22 58 views
1

我最近注意到,在1.8.1 App Engine版本中,他們將Py 2.7運行時Blobstore的文件類API的狀態從「實驗」改爲「棄用」。查看文檔,似乎他們沒有用於雲文件存儲的文件式上下文管理器。有沒有人將他們的Blobstorage遷移到GCS API?任何提示和建議,非常感謝。Bloblstore File API to GCS API

+0

我是否需要添加更多的答案?我錯過了什麼? –

回答

1

Appengine-gcs-client允許您在appengine中使用gcs,與舊文件api的使用方式大致相同。我不確定爲什麼它不會在文檔中變得更加突出。

下面是來自demo

def create_file(self, filename): 
    """Create a file. 
    The retry_params specified in the open call will override the default 
    retry params for this particular file handle. 

    Args: 
     filename: filename. 
    """ 
    self.response.write('Creating file %s\n' % filename) 

    write_retry_params = gcs.RetryParams(backoff_factor=1.1) 
    gcs_file = gcs.open(filename, 
        'w', 
        content_type='text/plain', 
        options={'x-goog-meta-foo': 'foo', 
          'x-goog-meta-bar': 'bar'}, 
        retry_params=write_retry_params) 
    gcs_file.write('abcde\n') 
    gcs_file.write('f'*1024*1024 + '\n') 
    gcs_file.close() 
    self.tmp_filenames_to_clean_up.append(filename) 

編輯一個片段: 它在文檔:https://developers.google.com/appengine/docs/python/googlecloudstorageclient/#about_the_google_cloud_storage_gcs_client_library

+0

我確實看到了。我的問題主要是因爲丟失的上下文管理器抽象出低層次的東西。例如: 使用files.open(file_blob,'a')作爲f: f.write(有效負載) files.finalize(file_blob) – rdodev

+1

您仍然可以這樣做:with with gcs.open(filename,' w')爲f: f.write('abcde \ n')(這是來自blobstore的例子,但寫入gcs:https://code.google.com/p/appengine-gcs-client/source/瀏覽/ trunk/python/demo/blobstore.py) –

+0

呵呵,沒有意識到。謝謝。這將使遷移變得更容易。 – rdodev