2016-01-13 43 views
0

我正在使用python中的请求包来查询正在为我执行一些处理的异步Web服务。如何确定在处理状态检查之间等待的最佳间隔时间?您是否需要为典型的处理请求生成典型的等待时间分布?如果您生成了这样的数据集,它会有用吗?查询异步Web服务的速率?

编辑:

你大概可以从这个documentation看,似乎没有成为这方面的服务,让我知道处理完成回呼选项。

这里是表示等待时间的分布(以秒计)的初始请求和处理完成之间的直方图:

enter image description here

回答

2

作为一般规则,异步操作应该提供一些信号他们已经完成了,所以不需要进行轮询。检查文档以查看请求完成时是否可以调用回调函数。

如果您别无选择,只能轮询,那么目标是尽量减少接受响应的延迟,同时不要通过过度轮询过度加载服务。适当的比例将取决于服务实际请求的相对成本与服务投票的成本。

响应时间主要取决于多少其他请求排队的服务往往具有遵循泊松分布的响应时间,但其他分布也是可能的。

在大多数情况下,即使开始轮询,直到您接近平均响应时间,也没有什么意义。

这可能是有用的:

  • 记录最近查询的时间,以用于预计未来的请求(平均值,STDDEV和“适合”的各种分布包括泊松)
  • 使用背与预期分配相匹配的关闭策略;通常这意味着指数后退。加倍很容易计算,但有点粗糙;黄金平均值(Φ=(1 +√5)/ 2)是一个很好的通用比例,但您可能可以为您的特定应用程序做得更好。
  • 由于过期的查询,可接受的故障率是多少?
  • 是否底层系统有一个合理的方法取消正在进行的查询,或者他们只是继续在服务器上运行浸泡了资源?)
+0

欢迎SO和漂亮的第一篇文章!我唯一的建议来改善你的答案将是考虑包括你谈论的事情的链接。总的来说,好的工作一次又一次,欢迎。 –

+0

添加了一些编辑来解决答案的某些方面。 – traggatmot

+0

是的,看起来很漂亮_Poissonish_,偏移大约3秒 - 大概是卸载时回答查询的最短时间。 – Martin