YQL问题 - “当前表已被阻止”

时间:2011-01-23 17:48:07

标签: yql

我是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(这显然是当你被限制时你得到的状态)。

任何人都可以告诉我为什么我收到这条消息,我应该怎么做,以及如何阻止它再次发生!?

谢谢, - 克里斯

3 个答案:

答案 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)

现在似乎已经回来了,几小时前我也从控制台收到错误,但是在重新加载控制台后,一切似乎都很好。