Kons
Если речь идёт об express-сервере (а, судя по всему, это так), и если это некий REST API, то так возвращать ошибку можно. Метод status, вызванный с числом, выставит HTTP Status Code ответа — http://expressjs.com/ru/api.html#res.status
Igor
Андрей
Кидай error
В том то и вопрос, как правильно кинуть?
Igor
Throw в смысле
Igor
Throw new error()
Kons
Можно и кинуть исключение, но тогда процесс упадет.
Igor
А в обработчике генерируй ответ по шаблону
Igor
В koa для этого есть throwError, и errorHandler, или как то так, покури доку
Igor
Igor
Error Handling · koajs/koa Wiki
https://github.com/koajs/koa/wiki/Error-Handling
Igor
Вот пример
Alexander
Вроде как
Андрей
Андрей
ikasymov
ixplo
https://www.npmjs.com/package/just-router
ixplo
роутер написан
ixplo
кидайте помидоры ) может глючить и вообще не работать
ikasymov
Мне надо еще хорошенко прочитать про tcp ip и сессии так как я думаю для каждого сессии отдельная обработка запросов
Alexander
Kons
Alexander
А джс код, который может застопорить процесс, надо паралелить кластером
ikasymov
не то написал
ikasymov
да
Kons
Если мы говорим о том, что шаблон рендерится асинхронно 20 секунд, то да, второй пользователь (если они зашли одновременно с первым) будет ждать 40 секунд до получения ответа.
Alexander
ikasymov
каждый чел ждет по 20 секунд
ikasymov
но если оба написаны синхронно
Alexander
В том и сила ноды, что для большинства простых типичных задач она не плодит процессы и оч быстро реагирует
Alexander
Потому она и популярна для апи прежде всего
Kons
В питоне нет евентлупа (из коробки)
Kons
принцип работы другой
ikasymov
ну ладно я уже флудить начал мне срочно надо прочитать про архитектуру nodejs tcp ip
ikasymov
спасибо
Kons
Ты слишком глубоко хочешь залезть. Это другой уровень сетевой модели.
Kons
Кстати, сеть тут вообще не при чем
Kons
Это было бы справедливо и для консольного скрипта
Alexander
Да ладно, вдруг ему просто на тсп что-то написать хочется
ikasymov
нет, хочу просто понять на чем езжу)
Kons
Просто если зарываться в TCP/IP, то вряд ли поймешь, как нода работает.
Aleksand
Kons
Т.е. в питоне так же, как и в ноде код выполняется в евент лупе?
Aleksand
Vladimir
Неправда
Aleksand
Aleksand
Неправда
отдельные нити выполнения для i/o не нужны
Vladimir
Нужны для fs
Vladimir
И для dns
Kons
Я не совсем правильно выразился, но как скажешь.
KlonD90
Да там же есть уровень самого по себе uevent или как там эта библиотека называется которая берет на себя асинхронный ввод вывод
KlonD90
соверешнно забываю как она постояно называется (
Kons
libuv
Aleksand
Нужны для fs
это уже логика libuv и это платформозависимый код
Vladimir
Всет касается io - это логика libuv
Aleksand
И для dns
а можешь показать где это для dns нити в libuv поднимаются? если для файлов еще где-то понятно то почему для dns?
Vladimir
https://github.com/libuv/libuv/blob/1a96fe33343f82721ba8bc93adb5a67ddcf70ec4/src/unix/getaddrinfo.c#L186
GG
ixplo
надо потестить ещё. могут быть баги )
ixplo
с экспрессом буду тестить по скорости после написания модуля статики и обёртки-сервера (самое простое)
Aleksand
Vladimir
Потом чту используется блокирующий getaddrinfo
Aleksand
Vladimir
он есть, но не используется по умолчанию
Vladimir
Для лучшей интеграции с ОС
Aleksand
короче они забили использовать getaddrinfo_a асинхронный и шедулят все через пул, поэтому надо обязательно использовать UV_THREADPOOL_SIZE, или вообще не использовать стандартный dns
KlonD90
зачем?
Aleksand
зачем?
по умолчанию потоков 4, при попытке зарезолвить сразу 1000 имен все встанет колом, например
Aleksand
но тут вообще лучше забить на стандартный резолвер, и сделать свой через udp, там нет блокирующих вызовов
Aleksand
но больше CPU_NUM * 10 потоков даже для i/o bound операций поднимать не стоит, поэтому dns конечно кроссплатформенный но очень ограниченный выходит
Alexander
Можно ли открыть 2 подключения socket.io? Допустим подключение для чата и чего-то ещё? Или разделение можно реализовать через одно подключение?
Aleksand
Yaroslav 🇺🇦
Друзья, что посоветуете пользовать для xhr или fetch внутри ноды?
Alexander