我作为一名承包商正在Node.js中开发一个RESTful API,该API目前正被其他承包商编写的几个黑莓应用程序使用。堆栈非常常见:Node、Express和Mongoose,运行在heroku上。
考虑以下API调用:
curl "https://my-app.herokuapp.com/v2/rest/documents/?view=tree&annotate=ratings,accessible"
当一个用Java编写的黑莓应用程序发出这个调用时,它每次都能正常工作。
现在考虑一下这个:
curl "https://my-app.herokuapp.com/v2/rest/documents/?view=tree&annotate=ratings%2Caccessible%2CcontentSize"
当Adobe Air Blackberry应用程序进行此调用时,它通常会收到来自Heroku的HTTP 503,Heroku错误代码为H12,这意味着请求超时。尽管如此,在BB应用程序上,当这种情况发生时,它确实会显示"501错误"。日志显示没有501,只有503。
然而,如果我使用curl
对服务器进行相同的调用,则响应是成功的,并且在之后的一段时间内,它在之前遇到问题的同一BB应用程序上也是成功的。就好像响应成功了一样,被缓存在Heroku的一侧,然后缓存了一段时间(这是猜测)。
主要区别在于annotate
查询字符串参数中包含了contentSize
。但很明显,它并没有太慢,因为当通过curl
调用时,它似乎工作得很好。
遗憾的是,我无法访问这两个BB应用程序的源代码,开发人员通常反应很慢,因为这不是他们唯一的项目。
所以我希望So上的某个人可能对这种问题有一些经验,并可能为我指明正确的方向。
谢谢!
有问题的应用程序的规模是否足以防止空转?我特别要求"卷曲然后让BB工作一段时间"。也许BB应用程序试图访问空闲服务时发生了超时?除此之外,我还不确定,但至少这可能是一个开始寻找的好地方。