我的任务非常简单.迁移并向现有NDB实体(~100K实体)添加新字段(重复和复合属性)后,我需要为其设置默认值.
我先尝试了这个代码:
q = dm.E.query(ancestor=dm.E.root_key)
for user in q.iter(batch_size=500):
user.field1 = [dm.E2()]
user.put()
Run Code Online (Sandbox Code Playgroud)
但它失败了这样的错误:
2015-04-25 20:41:44.792 /**** 500 599830ms 0kb AppEngine-Google; (+http://code.google.com/appengine) module=default version=1-17-0
W 2015-04-25 20:32:46.675 suspended generator run_to_queue(query.py:938) raised Timeout(The datastore operation timed out, or the data was temporarily unavailable.)
W 2015-04-25 20:32:46.676 suspended generator helper(context.py:876) raised Timeout(The datastore operation timed out, or the data was temporarily unavailable.)
E 2015-04-25 20:41:44.475 Traceback (most recent call last): File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in
Run Code Online (Sandbox Code Playgroud)
任务在单独的任务队列上运行,因此它至少需要10分钟才能执行,但似乎还不够.奇怪的是:来自NDB的警告.可能存在死锁,因为来自其他实例的相同实体的更新(由用户发起)但不确定.
无论如何,我想知道这种任务的最佳实践(和最简单).我知道MapReduce,但目前我认为这样的任务过于复杂.
更新:
此外,我尝试put_multi通过抓取数组中的所有实体来使用,但GAE会在超过~600 MB内存(限制为500 …
python google-app-engine bigdata app-engine-ndb google-cloud-datastore
我无法为使用 Xcode 10.2+ 构建的通用(胖)框架的模拟器(设备编译成功)编译应用程序。应用程序使用来自 Objective-C 代码的框架。当从为设备构建切换到为模拟器构建时,Xcode 停止识别框架中的任何类和其他实体,因此它不会编译(但在 Swift 文件中正确识别框架类)。
我创建通用框架的脚本类似于https://gist.github.com/sundeepgupta/3ad9c6106e2cd9f51c68cf9f475191fa(通常所有这些脚本使用几乎相同的逻辑,并且主要因变量命名而异)。