Python 每天只运行10k请求,第二天再运行10k请求,以此类推

Python 每天只运行10k请求,第二天再运行10k请求,以此类推,python,api,Python,Api,我只是在做一些程序,从一些api获取一些数据。 我使用yql访问yahoo geo stuff以匹配某些GeoName id。例如: def get_woeid(geonames_id): y = yql.Public() query = 'select * from geo.concordance where \ namespace="geonames" and text="' + geonames_id + '"' result = y.execute(que

我只是在做一些程序,从一些api获取一些数据。 我使用yql访问yahoo geo stuff以匹配某些GeoName id。例如:

def get_woeid(geonames_id):
  y = yql.Public()
  query = 'select * from geo.concordance where \
          namespace="geonames" and text="' + geonames_id + '"'
  result = y.execute(query)
  for row in result.rows:
      print row.get('woeid')
此函数从数据库获取geonames_id,并请求将该id与yahoo geo提供的woeid(where on earth id)匹配

问题是,这个api每天只允许10k请求,所以我必须使用一些逻辑来获取10k请求和“等待”,第二天它将继续处理下一个10k。。 我可以对所有数据进行循环,如果发出了10k个请求,那么就等到第二天再做一些等待或睡眠的事情,然后再做其余的事情,但我认为这应该做得更好,但我真的不知道怎么做

希望有人能帮上忙


谢谢:)

好的,我就这样做。我将在每次查询后保存id,并编写一个脚本,用于筛选缺少WOEID的对象并查询它们(但不超过10k),并每天使用kronos等工具运行该脚本


感谢大家:)

这听起来像是cron的工作!你为什么要这么做?您正在创建自己的本地数据库吗?这可能违反了API的使用条款。您确定要这样做吗?你能试着按需获取数据吗?您是否尝试过geo的开源db?比如地名?只是个主意!或者,你可以向雅虎支付超过10万美元的费用。我在一个类似的项目中工作,使用API和limit(在我的例子中是google),我们每天的收入从未超过10k!(按需,然后将结果缓存一段时间)和bdrew:我也想到了这一点,但是我如何跟踪我已经更新了哪些ID,也就是说我在最后一天更新了哪些ID?尼尔:是的,我为自己创建了一个数据库,比如说欧洲所有的城市,以及相应的地理名称和雅虎的woeid。你认为这真的违反了他们的使用条款吗?拉扎罗:随需应变并不是我真正想做的。我希望这些数据都可以直接访问,因为在“生产”中,可能会出现这样的情况,即“我的服务”上的许多请求将超过限制,并且无法获取更多的ID。@christian1337他们的使用条款第2节说,存储结果的时间不能超过24小时。他们花了很多钱来收集或购买这些数据,为什么他们会让其他人免费创建一个副本,并可能获利。这是几乎所有提供对自己数据库的API访问的人的典型特征。他们希望保持数据的所有者身份。