似乎Boto是Python 的官方 Amazon API 模块,而这个是 Tornado 的,所以这是我的问题:
- 它是否提供分页(仅请求 10 个产品,因为亚马逊每页提供 10 个产品,那么我只想获得第一页......),那么如何(示例代码?)
- 然后如何解析产品解析,我使用了python-amazon-simple-product-api但遗憾的是它不提供分页,所以所有的报价都在不断迭代。
似乎Boto是Python 的官方 Amazon API 模块,而这个是 Tornado 的,所以这是我的问题:
通常,分页由请求 api 的客户端执行。要在 boto 中执行此操作,您需要削减系统。例如,假设您使用 get_all_instances def 通过 boto 调用 AWS;您需要以某种方式存储这些内容,然后跟踪已显示哪些服务器,哪些未显示。据我所知,boto 没有大多数开发人员习惯于 MySQL 的 LIMIT 功能。就个人而言,我扫描所有实例并将它们存储在 mongo 中,如下所示:
for r in conn.get_all_instances(): # loop through all reservations
groups = [g.name for g in r.groups] # get a list of groups for this reservation
for x in r.instances: # loop through all instances with-in reservation
groups = ','.join(groups) # join the groups into a comma separated list
name = x.tags.get('Name',''); # get instance name from the 'Name' tag
new_record = { "tagname":name, "ip_address":x.private_ip_address,
"external_ip_nat":x.ip_address, "type":x.instance_type,
"state":x.state, "base_image":x.image_id, "placement":x.placement,
"public_ec2_dns":x.public_dns_name,
"launch_time":x.launch_time, "parent": ObjectId(account['_id'])}
new_record['groups'] = groups
systems_coll.update({'_id':x.id},{"$set":new_record},upsert=True)
error = db.error()
if error != None:
print "err:%s:" % str(error)
您也可以将它们包装在 try/catch 块中。由你决定。一旦你把它们从博托中取出,做切割工作应该是微不足道的。
——杰斯