出于某种原因,每秒27个请求我们开始有时会看到okhttp的问题,我们注意到每个主机限制有5个请求。我们正在谈论一个有时候片状/超时的api等等。
我注意到我们没有取消超时请求,而且它们似乎还在飞行中。 (即我想开始使用RealCall.cancel)
在调查中虽然RealCall.cancel调用engine.cancel(),如果引擎不为null,则调用streamAllocation.cancel()调用以下代码...
$registrantList .= '<tr><td><a href="' . $row['Link'] . '">' . htmlentities($row['Client']) . '</a></td><td>' . htmlentities($row['Product']) . '</td><td>' . htmlentities($row['Market']) . '</td><td>' . htmlentities($row['Type']) . '</td><td>' . htmlentities($row['Date']) . '</td><td>' . htmlentities($row['Category']) . '</td><td>' . $row['Disc'] . '</td><td>' . htmlentities($row['Notes']) . '</td></tr>';
这看起来非常可怕,因为我只想取消一个请求而不是整个连接。即。只是流http2流可能但我绝对希望连接活着(我认为)。
感谢, 迪安
答案 0 :(得分:2)
如果在有流之前取消,例如在TLS握手期间取消,则取消将取消整个连接。取消流后,只取消流。