Я люблю Unirest , я действительно люблю ...
К сожалению, похоже, что это не очень потокобезопасно.
Я попытался распараллелить мойзапросов:
runBlocking {
for (a in 0..9) async{
for (b in 0..9) async{
for (c in 0..9) async{
if (!found) Unirest.post(targetURL)
.body(String.format(requestTemplate, a, b, c))
.asStringAsync(object : Callback<String> {...})
}
}
}
}
и все, что я достиг, было
Feb 11, 2019 11:44:51 PM org.apache.http.impl.nio.client.InternalHttpAsyncClient run
SEVERE: I/O reactor terminated abnormally
com.mashape.unirest.http.exceptions.UnirestException: java.net.ConnectException
at com.mashape.unirest.http.HttpClientHelper$1.failed(HttpClientHelper.java:86)
at org.apache.http.concurrent.BasicFuture.failed(BasicFuture.java:134)
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.failed(AbstractClientExchangeHandler.java:419)
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.connectionRequestFailed(AbstractClientExchangeHandler.java:335)
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.access$100(AbstractClientExchangeHandler.java:62)
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler$1.failed(AbstractClientExchangeHandler.java:378)
at org.apache.http.concurrent.BasicFuture.failed(BasicFuture.java:134)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalPoolEntryCallback.failed(PoolingNHttpClientConnectionManager.java:503)
at org.apache.http.concurrent.BasicFuture.failed(BasicFuture.java:134)
at org.apache.http.nio.pool.RouteSpecificPool.timeout(RouteSpecificPool.java:170)
at org.apache.http.nio.pool.AbstractNIOConnPool.requestTimeout(AbstractNIOConnPool.java:560)
at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.timeout(AbstractNIOConnPool.java:821)
at org.apache.http.impl.nio.reactor.SessionRequestImpl.timeout(SessionRequestImpl.java:182)
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processTimeouts(DefaultConnectingIOReactor.java:212)
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:157)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:350)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:191)
at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException
... 10 more
Код работает нормально без async
s, поэтому я буду винить ошибку при одновременном доступе к ресурсам, которые не являютсяпредназначен для одновременного доступа.(Если я ошибаюсь по этому поводу, молитесь, пожалуйста, скажите.)
Существуют ли клиентские структуры, которые являются легковесными, но допускают такой тип распараллеливания?