我是YQL的新手,在检索数据时遇到了一些问题。我正在尝试执行的查询是:
select * from yahoo.finance.historicaldata where symbol = "TW.L" and startDate = "01/01/2011" and endDate = "22/01/2011"
我确实通过YQL控制台使用这样的查询检索了一些信息而没有任何问题。现在每当我尝试时,我都会得到一些XML,其中包含以下消息:
当前表格 'yahoo.finance.historicaldata'有 被封锁了。它超出了分配范围 任何时间或指示的配额
我认为这是某种速率限制,但我很确定我远不及每小时引用的1,000个请求作为限制。另外,我得到一个HTTP响应200,而不是999(这显然是当你被限制时你得到的状态)。
任何人都可以告诉我为什么我收到这条消息,我应该怎么做,以及如何阻止它再次发生!?
谢谢, - 克里斯
答案 0 :(得分:6)
我认为此消息与您的速率限制无关,而是与此表的全局阻止,例如我尝试访问此表时收到相同的错误消息。因此,我宁愿假设其他人过于广泛地查询此表,这反过来导致此表被阻止,就像错误消息所示。
该表的内部显示它正在向http://ichart.finance.yahoo.com/table.csv托管的CSV发送两个查询。你可以在这里自己查看内部,看看在该表的javascript部分做了什么:https://github.com/spier/yql-tables/blob/master/yahoo/finance/yahoo.finance.historicaldata.xml
我知道这并不能解决您使用YQL表的问题,但是如果您继续遇到此表的问题,那么您应该直接查询CSV文件而不是通过YQL表。
如果您仍想知道YQL表的问题是什么,那么您可以直接在Yahoo的YQL论坛中发布您的问题:http://developer.yahoo.net/forum/?showforum=41&cookiecheckonly=1
如果您有任何相关信息,请在此发布。 THX。
答案 1 :(得分:2)
我认为这里可能存在两个相关问题:说明太多,而且运行频率太高。
当我在[YQL控制台] [yql]中运行查询时,我看到部分响应:
<javascript execution-time="6783" instructions-used="50024350" table-name="yahoo.finance.historicaldata"/>
<javascript name="yahoo.finance.historicaldata" verb="select">
<![CDATA[java.lang.RuntimeException: Too many instructions executed: 50024350]]>
</javascript>
您可以看到问题是“执行了太多指令”。
查看该表的示例查询,它看起来像是开始&amp;该表的结束日期使用yyyy-mm-dd格式。因此,您的查询可以重写为:
select * from yahoo.finance.historicaldata where
symbol = "TW.L" and
startDate = "2011-01-01" and
endDate = "2011-01-22"
这个更新的查询对我有用了几次,但现在我收到了被阻止的表的进一步错误:
<javascript name="yahoo.finance.historicaldata" verb="select">
<![CDATA[com.yahoo.platforms.pipes.model.ModuleException: Error Codes:
js.blocked.execute.request Message: "The current table 'yahoo.finance.historicaldata'
has been blocked. It exceeded the allotted quotas of either time or instructions"]]>
</javascript>
一个人可能会导致另一个人;换句话说,格式错误的请求导致运行的指令太多,导致表被阻止。
答案 2 :(得分:0)
现在似乎已经回来了,几小时前我也从控制台收到错误,但是在重新加载控制台后,一切似乎都很好。