Play Framework与libray流方法在连接2分钟后停止

时间:2018-01-31 06:04:53

标签: scala web-services twitter playframework twitter-streaming-api

我正在使用Play 2.6和Twitter流API。 以下是我使用ws库的stream()方法连接到twitter的方法。

问题是,蒸汽总是在2分钟后停止。我尝试了不同的主题,行为非常一致。 似乎有一个设置,但我找不到。

我不确定它是在游戏方面还是在推特方面。 非常感谢任何帮助。

  ws.url("https://stream.twitter.com/1.1/statuses/filter.json")
          .sign(OAuthCalculator(ConsumerKey(credentials._1, credentials._2), RequestToken(credentials._3, credentials._4)))
          .withQueryStringParameters("track" -> topic)
          .withMethod("POST")
          .stream()
          .map {
            response => response.bodyAsSource.map(t=> {t.utf8String})
          }

1 个答案:

答案 0 :(得分:3)

Play WS默认请求超时,默认情况下为2分钟。 这是文档的链接: https://www.playframework.com/documentation/2.6.x/ScalaWS#Configuring-Timeouts

所以你可以加入application.conf

play.ws.timeout.request = 10 minutes

指定所有请求的默认超时。

您还可以使用withRequestTimeout构建器

WSRequest方法为单个请求指定超时
/**
 * Sets the maximum time you expect the request to take.
 * Use Duration.Inf to set an infinite request timeout.
 * Warning: a stream consumption will be interrupted when this time is reached unless Duration.Inf is set.
 */
def withRequestTimeout(timeout: Duration): WSRequest

因此,要禁用sigle请求的请求超时,您可以使用以下代码

ws.url(someurl)
      .withMethod("GET")
      .withRequestTimeout(Duration.Inf)