0

似乎BotoPython 的官方 Amazon API 模块,而这个是 Tornado 的,所以这是我的问题:

  • 它是否提供分页(仅请求 10 个产品,因为亚马逊每页提供 10 个产品,那么我只想获得第一页......),那么如何(示例代码?)
  • 然后如何解析产品解析,我使用了python-amazon-simple-product-api但遗憾的是它不提供分页,所以所有的报价都在不断迭代。
4

1 回答 1

3

通常,分页由请求 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 块中。由你决定。一旦你把它们从博托中取出,做切割工作应该是微不足道的。

——杰斯

于 2012-10-27T17:48:24.433 回答