我应该在白天执行数千次网址抓取。所有调用都相同,只是参数更改 - way
和date
。
目前我使用多个cron条目来执行此类调用:
- description: get data
url: /admin/getdata?d=way1,way2,way3,way4,...,way12
schedule: every day 8:30
- description: get data
url: /admin/getdata?d=way13,way14,way15,way16,...,way24
schedule: every day 8:40
...
- description: get data
url: /admin/getdata?d=way99,way100,way101,way102,...,way123
schedule: every day 9:20
然后在我的getdata
处理程序中,我解析收到的d
参数并执行多个urlfetch
es:
for date_ in dates:
for way in d:
response = urlfetch.Fetch('http://example.com?way='+way+'&date='+date_, deadline=60, headers=headers, follow_redirects=True)
但它并没有给我带来太多帮助 - 对于cron工作而言,60秒还不够。
我正在考虑每十分钟运行一次cron作业,但我应该存储可能的way
和date
s,标记已执行的请求,然后重置它(以便能够再次执行所有操作)明天)。
还有更好的方法吗?
答案 0 :(得分:1)
更好的方法是每天只有一个cron作业来获取所有网址。您需要做的就是在后端实例上定位此cron-job,该实例没有时间限制。
使用Modules创建此类实例,并添加" target"设置你的cron工作。
答案 1 :(得分:1)
或者,一个cron作业为所有其他URL生成任务作业。这可以在默认模块中免费完成。我会设置一个countdown
参数,将它们分开,以免产生太多实例。同时简化了app.yaml。