Проблема с задержкой распознавания
TrurlMcByte opened this issue · 4 comments
- Версия 1.8.5
- Тип ПК: Стационар
- Производительность ПК: Высокая
- Режим работы: ROBOT
Иногда очень долго распознаётся капча (сервер перегружен/плохой инет), ответ приходит сильно после того, как рыба уже сорвалась и чар находится в режиме ожидания. В этот момент бот, вдруг, без проверки, начинает "вводить" опоздавшую капчу, а на самом деле - ходить вокруг в случайных направлениях (в зависимости от капчи). В итоге в конце концов либо удаляется от воды, либо падает в эту самую воду. Надо бы хотя бы добавить таймаут на распознавание капчи.
я тут накидал от нечего делать
index 27ba372..dccdff5 100644
--- a/src/main/java/ru/namibios/arduino/model/bot/service/HttpService.java
+++ b/src/main/java/ru/namibios/arduino/model/bot/service/HttpService.java
@@ -14,6 +14,7 @@ import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClients;
+import org.apache.http.client.config.RequestConfig;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
@@ -73,7 +74,11 @@ public class HttpService {
SSLContext tls = getSSLContext();
Header header = new BasicHeader("x-forwarded-for", AppUtils.getForwaded());
+ RequestConfig requestConfig = RequestConfig.custom()
+ .setConnectTimeout(15000)
+ .setSocketTimeout(15000).build();
httpClient = HttpClients.custom()
+ .setDefaultRequestConfig(requestConfig)
.setDefaultHeaders(Collections.singletonList(header))
.setSSLContext(tls)
.build();
в принципе вроде ничего не сломал, но ошибок пока не было.
PS. С детства не люблю Java
Желательно еще логи приложить, где подобная проблема всплывает, чтобы я мог посмотреть что на сервере творилось в это время.
Только мне кажется что задержка в 15 секунд слишком большая. Не засекал сколько времени отводится на ввод капчи, но думаю что не больше 5-6 секунд, поэтому примерно таким значение можно и ограничить. Ну и желательно ограничение на время ответа указать только для запроса на парсинг капчи, а не для всего http-клиента. Добавлю в следующей версии.
Да, про 5-6 секунд точно, у себя уже исправил на 6000, буду смотреть дальше.
Логи не сохранились при ребилде.
Еще периодически наблюдается странный баг с самозапуском бота после остановки. Причём даже если он в это время уже был опять повторно запущен (сама собой появляется модалка "Program already running"). Клаву и мышку никто не трогал при этом. Явно что-то с новыми паузами связано.