【问题标题】:await() in play 1.2.5await() 在播放 1.2.5
【发布时间】:2013-01-11 08:44:11
【问题描述】:

我正在使用 play 1.2.5,并且我正在对 REST 服务进行异步调用。

为此,我创建了一个 Promise 对象,然后将此 Promise 对象作为参数提供给 await() 方法。 await() 方法返回给我一个 httpResponse 对象。

它工作正常,然后 REST 服务返回响应。但是如果 REST 服务没有响应(可能是因为 REST 服务已关闭),那么我在 httpResponse 中得到一个空值。 但是需要一些时间才能得到回复。

我可以配置等待其余服务响应承诺的时间吗?如果不是,那么默认等待时间是多少?

任何帮助将不胜感激

【问题讨论】:

  • 您使用什么语言?斯卡拉?
  • 我使用 java 作为调用 REST 服务的语言。
  • 大概您解决了承诺以响应成功的 REST 响应。同样,如果 REST 超时或返回错误,您需要拒绝承诺。具体如何完成(以及使用的术语)取决于您使用哪个库来实现您的承诺。

标签: java playframework playframework-1.x promise


【解决方案1】:

如果您使用 play WS 库,则您在 WSRequest 对象上有一个超时方法,您可以在其中定义在没有响应时调用返回之前所花费的时间(以秒为单位)

【讨论】:

    【解决方案2】:

    WSRequest 上有一个超时调用。

    WS.WSRequest wsReq = WS.url("http://whatever");
    wsReq.timeout("1min");
    
    ...
    

    当您执行postAsync() 时,您会得到一个承诺。您还可以调用promise.onRedeem() 添加一个处理程序来处理错误等。您可以使用它来捕获超时异常。

    【讨论】:

    • 感谢大家的帮助。使用“timeout()”对请求设置超时看起来是个好主意。但它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多