1

これは、バルクローダーでダウンロードしてローカルのdevサーバにアップロードすることで可能でした。しかし、oauth2をサポートしていないため、bulkloaderのダウンロードは数ヶ月間機能していませんでした。App Engine:ライブデータストアをローカルのデータストアにコピーします(それでも動作します)

クラウドストレージバックアップからダウンロードし、バルクローダーまたはバックアップを直接解析してローカルデータストアにアップロードすることをおすすめします。しかし、これらの機能はもう機能していません。 bulkloader方法は、スロー:

OperationalError: unable to open database file 

そして、最初のレコードを読み取ろうと読まれていない記録が得られたときにバックアップファイルを読み込むために使用されるRecordsReaderクラスは、ファイルの終わりに達しました。

ローカルのデータストアにライブデータストアをコピーする現在の機能的な方法が存在しますか?

答えて

1

UnixではRecordsReaderが完全に機能しています。私はこの前にhttps://gist.github.com/jehna/3b258f5287fcc181aacfを試してみました。

Kindsのインプリメンテーションをインポートに追加し、データストアのインタラクティブシェルで実行する必要があります。例えば : myproject.kinds_implementationsからは、私は

for pp in dir(a): try: ppp = getattr(a, "_" + pp) if isinstance(ppp, db.Key): ppp._Key__reference.set_app(appname) ppp except AttributeError: """ It's okay """

を削除したそして、それがうまく働いたMyKind インポートします。私の場合、バックアップは複数のディレクトリにダウンロードされているので、ディレクトリへのアクセスを変更しました。そのようないくつかのもののために:偉大な仕事 :あなたがWindows上RecordsReaderについての私の質問に従うことを歓迎しているWindows上で作業している場合

for directory in mypath: full_directory_path = join(mypath, directory) for sub_dir in listdir(directory_full_path): full_sub_dir_path = join(full_directory_path, sub_dir) onlyfiles = [ f for f in listdir(full_sub_dir_path) if isfile(join(mypath,f)) ] for file in onlyfiles:

は、うまくいけば、誰かがそこGoogle datastore backup to local dev_appserver

編集にお答えしますファイルのオープン権限を 'r'から 'rb'に変更した場合Windows上で

1

バルクローダーは、いくつかの警告があるにもかかわらず、PythonではOAuth2で動作しています。ライブアプリからのダウンロードでは、OAuth2トークンをリフレッシュする際に問題が発生するため、合計ダウンロード時間は3600秒に制限されています。手動で--oauth2_refresh_tokenでリフレッシュトークンを使用する場合は3600 + 3600に制限されます。

開発サーバーアプリにアップロードすると、それはgoogle.appengine.ext.remote_api.handler編集し、常に回避策としてTrueを返すには「CheckIsAdmin」をスタブアウトする必要がありますので、のOAuth2は、401で失敗します:

def CheckIsAdmin(self): 
    return True 
    user_is_authorized = False 
    ... 

私は上記の答えを強調しましたが、この時点ではより堅牢な解決策のように見えます。

関連する問題