1

我正在使用异步 url 获取调用来访问来自外部服务器的信息,同时进行其他处理。如果原始异步 url 获取调用失败而没有返回原始(主)线程,因为它忙于做其他事情,我希望能够重试调用或将 url 更改为备份 url。这样做的最佳方法是否只是生成一个执行同步 url 获取的辅助线程(我猜为了这个工作我必须暂停/恢复在两个线程之间切换,因为应用程序引擎不是多核的)?或者在重试 url 获取操作之前等待主线程完成它正在做的所有事情会更好吗?

谢谢!

4

1 回答 1

1

在您的用例中,使用运行同步 URLFetch 的辅助线程会很好。从开发人员的角度来看,拥有非多核 CPU 不会影响线程的操作,因为 JVM 和/或操作系统会为您处理。

一个小警告,因为 GAE 是一个沙盒环境,您需要通过 Google 的 API 创建线程。如果您还没有,您可以在此处查看有关如何生成 App Engine 线程的简短文档。

请注意,生成的线程的生命周期仅限于原始请求的生命周期。(即前端实例请求 60 秒)另一个好主意是使用辅助线程上的请求计时器定期检查剩余的可用时间,然后再进行第二次 URLFetch 调用,这样您就可以调整超时限制或让您的请求正常终止如果没有足够的剩余时间。

于 2013-03-19T10:08:35.677 回答