增加HTTP客户端超时

时间:2014-07-11 09:42:23

标签: java android http tomcat

我会直接进入主题

我有一个可以运行音乐推荐系统的服务器(适用于某种应用) 服务器有一个非常大的数据库

所以我做了一个推荐系统的单例构造函数。 我的问题是 第一次创建这个构造函数时,它必须运行一个训练数据并且它连接到数据库很多,这是一个耗时的操作

这必须根据我的singleton对象第一次运行,然后,它能够立即使用构造函数的结果

我的问题是,在从我的PC到服务器的第一个HTTP请求中,资源管理器超时并且从不在服务器上创建单例对象

我认为我的解决方案是延长资源管理器的等待时间,直到服务器完成计算并返回结果,但是 如果有人有更好的解决方案,我会在他的部门中大有作为

我真的需要一个简单易用的解决方案,只需要很少的工作量,因为交付截止日期正在关闭,我需要尽快包装项目

再次感谢

2 个答案:

答案 0 :(得分:2)

很少有评论/建议

  • 增加超时是一种方法,但它不能确定解决问题的方法。推荐系统所花费的时间在一段时间内可能并不总是相同的。
  • 我建议另一种方法来解决这个问题。不确定它是否适合您,但是是否可以在单独的线程中创建推荐系统异步,以便服务器启动不会被此阻止?
  • 如果您可以执行上述操作,请设置标记,表示推荐系统已启动。
  • 同时,如果您收到任何请求,请先检查该标志,如果该标志表明推荐系统尚未启动,则返回一些有意义的消息/状态。
  • 这样您就可以立即获得响应,并根据您可以在客户端重试的响应。

请注意,这将是服务器端的重大变化。只是一种改进事物的意见和完全证明避免超时的方法。

答案 1 :(得分:1)

您可以使用下面的

来增加连接时间
HttpResponse response = null;
final HttpParams httpParams = new BasicHttpParams();
// 60 second connection timeout
HttpConnectionParams.setConnectionTimeout(httpParams, 60000);
HttpClient httpClient = new DefaultHttpClient(httpParams);