这个周末,我在一个新项目上的每日免费配额用完了。作为参考,这是 0.05 万次写入,如果我的数学是正确的,则为 50,000 次。
以下是我的项目中进行任何 Datastore 写入操作的唯一代码。
old = Streams.query().fetch(keys_only=True)
ndb.delete_multi(old)
try:
r = urlfetch.fetch(url=streams_url,
method=urlfetch.GET)
streams = json.loads(r.content)
for stream in streams['streams']:
stream = Streams(channel_id=stream['_id'],
display_name=stream['channel']['display_name'],
name=stream['channel']['name'],
game=stream['channel']['game'],
status=stream['channel']['status'],
delay_timer=stream['channel']['delay'],
channel_url=stream['channel']['url'],
viewers=stream['viewers'],
logo=stream['channel']['logo'],
background=stream['channel']['background'],
video_banner=stream['channel']['video_banner'],
preview_medium=stream['preview']['medium'],
preview_large=stream['preview']['large'],
videos_url=stream['channel']['_links']['videos'],
chat_url=stream['channel']['_links']['chat'])
stream.put()
self.response.out.write("Done")
except urlfetch.Error, e:
self.response.out.write(e)
这是我所知道的:
- “流”中的“流”永远不会超过 25 个。保证调用 .put() 正好 25 次。
- 我在此调用开始时从表中删除所有内容,因为每次运行时都需要刷新所有内容。
- 现在,此代码在每 60 秒运行一次的 cron 上。它的运行频率永远不会超过每分钟一次。
- 我通过启用 Appstats 验证了所有这些,我可以看到 datastore_v3.Put 计数按预期每分钟增加 25 个。
我必须在这里做错事,因为每分钟 25 次是每小时 1,500 次写入,而不是我现在看到的 ~50,000 次。
谢谢