Начать цикл не проще? Если есть общее слово, то можно через цикл и XPATH подобранный
node js Таймаут
-
Таймаут во время выполнения функции на встроенном языке
Либа string-similarity. Тестил только на ней.
Тестовый скрипт. Проверяется схожесть слов из списка.
При запуске в 250-260 потоков все срабатывает хорошо, поочередно и в том числе с циклами.
Запуск в 300 потоков - node js не срабатывает и выдает Таймаут.
Запуск в 300 потоков - перед выполнением кода в node выставлена небольшая пауза для потоков - срабатывает нормально.Запуск в 300 потоков , node обернул в игнорирование ошибок. Все 300 потоков падают в ошибку, далее сделан повтор выполнения в случае ошибки и перед повторным выполнением сделана такая же пауза как и в предыдущем случае - не работает. Вот этот момент самый интересный т.к. по идее все должно сработать так же как в предыдущем случае.
Основной скрипт. 250-300 потоков. Скрипт достаточно большой и действие node запрашивается не одновременно на всех потоках.
-
Предыдущая версия отчасти работает исправно, с игнорирование ошибки и повторении действия удается выполнить node за 2-3 минуты.... (то есть 1-3 раза получаю таймаут и на 4й раз успешно).
-
Скрипт запускает потоки пачками по несколько штук в течении часа. Как только потоков становится много (на глаз это примерно > 200) то начинаются те же проблемы с выполнением node.
Прикладываю тестовый скрипт, кто будет пробовать повторить - пробуйте несколько раз, один раз у меня во время первого запуска все сработало хорошо, а во всех остальных - нет.
0_1523028267350_test node.xml
0_1523028504429_вв.txt (список для сравнения)Надеюсь описал достаточно понятно)

-
-
@DrPrime попробовал поставить 200 сек - не помогло, по дефолту стоит 60 сек видимо
по тестовому варианту можно подумать, что это происходит из-за большого количества одновременных обращений к node, но в основном скрипте одновременно выполняют это действие около 5 потоков
записал видео тестового варианта https://drive.google.com/file/d/1P5qgo7JJ87nWOjhzttO5a9tJSitUsRsx/view?usp=sharing
пока как-то так приходится работать

-
Думаю это всё таки баг. Но лучше уточнить у @support
Вот тестовый скрипт , который через node js выводит в лог слово test. Рандомная задержка происходит внутри node js:
function wait(ms) { var start = Date.now(), now = start; while (now - start < ms) { now = Date.now(); } } wait([[RANDOM_NUMBER]]) console.log("test")Запуск в 258 потоков отрабатывает спокойно. А вот запуск в 259 потоков выводит все потоки в ошибку
Поток завершился с сообщением "Таймаут во время выполнения функции на встроенном языке"
Ещё заметил странность, я закрыл браузеры(обычные, не в BAS), закрыл второе окно BAS. И смог запустить свой тестовый скрипт в 268 потоков. Но опять же, запуск в 269 потоков крашит их всех.
Решил сделать запись с экрана, при включенной записи не даёт запустить больше 256, а без записи с экрана запускается до 269 потоков.


-
@SimpleUser Маловероятно, что у меня с @venom777 одинаковое железо. Что node js у меня и у него работает стабильно до 250 потоков, а дальше может совсем не запустится.
Я попробовал выделить ошибку в тестовом скрипте. У вас в нём какое максимально-рабочее количество потоков?
-
-
@fox Вам удалось решить эту проблему? У меня тоже при запуске в 39 потоках из 100 выскакивала ошибка
"Таймаут во время выполнения функции на встроенном языке"В самой функции только это:
var low = ([[THREAD_INDEX]] - 2) * 876; var high = ([[THREAD_INDEX]] - 2) * 1103; function randomInteger(min, max) { var rand = min + Math.random() * (max + 1 - min); rand = Math.floor(rand); return rand; } [[RND_WAIT]] = randomInteger(low, high); await (new Promise((resolve, reject) => { setTimeout(function(){ resolve(); }, [[RND_WAIT]]); }));В остальных 61 потоках все выполнялось нормально.
Но это если значение таймаута в ноде выставлено на "по-умолчанию". Затем я поставил там 10 секунд, и все 100 потоков выполнились без ошибок. Теперь вернул опять на "по-умолчанию" и ошибок уже нет, все 100 потоков успешны.
-
@Fox said in node js Таймаут:
Запуск в 258 потоков отрабатывает спокойно. А вот запуск в 259 потоков выводит все потоки в ошибку Поток завершился с сообщением "Таймаут во время выполнения функции на встроенном языке"
Проблема кстати до сих пор не решена, все также потоки завершаются с ошибками - "Таймаут во время выполнения функции на встроенном языке"
-
@Vincent_ said in node js Таймаут:
Тоже столкнулся с проблемой, что nodejs 18 падает и на 10 потоках
Можно и в 1 поток уронить инстанс ноды. Выполните эту строку в ноде:
await new Promise(r => setTimeout(r, 2000000));Поток завершится ошибкой
"Таймаут во время выполнения функции на встроенном языке" -
@Fox Как в таком случае листить сервер? Вот у меня, есть код
async function startBaS(idsession, uuid) { await BAS_FUNCTION( "update", { "idsession": idsession, "uuid": uuid } ) } wss.on('connection', (ws) => { ws.on('message', async (data) => { console.log(data) if (!data) { return } const message = JSON.parse(data); console.log(message); if (Object.keys(message).length == 0) { ws.send(JSON.stringify({ type: 'error', message: 'params not valid Object.keys(message).length == 0' })) return } const _id = message._id; // id session const _uuid = message.uuid; // id session if (!_uuid || !_id) { ws.send(JSON.stringify({ type: 'error', message: 'params not valid !_uuid || !_id', uuid: _uuid })) return } try { ws.send(JSON.stringify({ type: 'task_progress', uuid: _uuid, id_session: _id })); await startBaS(_id, _uuid) ws.send(JSON.stringify({ type: 'update_cancel', uuid: _uuid, id_session: _id })); } catch (e) { console.log(e) ws.send(JSON.stringify({ type: 'update_error', message: e.message })) } }); }); await(new Promise(async (resolve, reject) => { while (true) { await new Promise(resolve => setTimeout(resolve, 1000)) } }));если я не использую цикл ожидания, который указан внизу - функции баса из ноды просто не будут работать - (хотя сам сервер будет принимать запросы и отвечать на них )
Может есть какой-то коннектор к басу или порт? -
@Abraham В таком случае вам нужно https://github.com/CheshireCaat/bas-remote-node Тоесть логика приложения пишется в самой node и из нее запускаются нужные функции БАС
