あなたのurlfetch.Fetch()はrespsondに時間がかかりすぎて(60秒以上)タイムアウトしています。ここに記事がありますhttps://cloud.google.com/appengine/articles/deadlineexceedederrors
解決策の1つはタスクキューを使用することです。タスクキューのタイムアウトは長くなります。より適切には、ジョブを小さな部分に分割することができます。 https://cloud.google.com/appengine/docs/python/taskqueue/
ここでは、「プッシュ」タスクキューでこれを行う方法の簡単な例を示します。あるデータストアモデルから別のデータストアモデルへの移行が、あなたが探している冗長性ではないかもしれないことに気付きます。データストアのエンティティを別のアプリケーションに完全にバックアップするか、別のタイプのデータベースまたはクラウドサービスにバックアップすることができます。また、バックアップしている複数のモデルがある可能性もあります。
builtins:
- deferred: on
:
は、まずあなたがあなたのapp.yamlで組み込みコマンドに「延期」を追加する必要があります。これはcronジョブを24時間ごとに使用する「プッシュ」タスクキューを設定し、スケジュールの単純な例です。
次に、「バックアップ」と呼ばれる2番目のデータストアモデルを作成する必要があります。古いモデルをコピーして名前を変更するだけです。同じモデルではなく、同じモデルのバックアップを同じモデルで使用すると便利です。それらに同じプライマリを与え、同じキーをバックアップします。
class Backup(db.Model): # example
prop1 = db.StringProperty()
prop2 = db.StringListProperty()
prop3 = db.StringProperty()
次のセットアップあなたのcron.yamlでcronジョブ:をapp.yamlハンドラへ
- description: Creates a backup of the target db every 24 hours at 10:45 GMT
url: /backup
schedule: everyday 10:45
追加/バックアップは:
- url: /backup
script: mybackup.py
login: admin
最後に、mybackup.py
from google.appengine.ext import deferred
from google.appengine.ext import db
#from google.appengine.ext import ndb
def backup_my_model(model_name):
"""
Takes all enities in the model_name model and copies it to Backup model
"""
logging.info("Backing up %s" % model_name)
query = db.GqlQuery('SELECT * From %s ' % model_name)
for primary_db in query:
backup = Backup(key_name = primary_db.key_name)
backup.prop1 = primary_db.prop1
backup.prop2 = primary_db.prop2
...
backup.put()
deferred.defer(backup_my_model, MyModel) #where MyModel is the model you want to backup
deferred.defer(backup_my_model, MyOtherModel)
...
deferred.defer(backup_my_model, MyFinalModel)
Iを作成します助けてくれることを望む。
私はDatastore Adminを使用していますが、使用するタスクキューを設定する方法はありません。http://screencast.com/t/H6cTrvvr – ThomasD
あなたがしようとしていることを達成するためにあなたがデータストア管理者からではなく、あなたのアプリからそれをやる必要があるタスクで。あるデータストアモデルから別のデータストアモデルへの単純な例を与えるためにコードを更新します。 – Doug
本番データベースをバックアップし、テスト環境で復元しようとしています。だから、私は生産のGoogleアプリエンジンのアプリからGoogle App Engineのテストアプリにデータをコピーしようとしています。限り、私は上記のあなたのコードは、同じアプリ内ではなく、アプリケーション間で別のモデルにデータをコピーすることができますか? – ThomasD