Sergey
GG
не
Спасибо, а то я сегодня хотел его заюзать
Sergey
во вторых, чтобы иметь возможность остановить инсерт, не нужно в .map перебирать, его не прервать
Sergey
Спасибо, а то я сегодня хотел его заюзать
cluster хорош для создания кластера и не больше )
GG
cluster хорош для создания кластера и не больше )
Наверное я не так понимаю кластеры) я думал что это запускается новый демон ноды и ему передаются задачи
Алексей
Наверное я не так понимаю кластеры) я думал что это запускается новый демон ноды и ему передаются задачи
А зачем в данном случае кластер, если можно просто породить дочерний процесс для выполнения конкретной задачи вставить в базу кучу данных?
Sergey
Наверное я не так понимаю кластеры) я думал что это запускается новый демон ноды и ему передаются задачи
cluster имеет два варианта раннеров Запускается один и тот же файл в котором есть условия, что исполнять для мастер процесса, а что для слейва мастер просто запускает несколько дочерних процессов и собирает с них данные
Алексей
А если обратная связь нужна?
А как в случае кластера эта проблема решается?
GG
А как в случае кластера эта проблема решается?
Хз, я их не так понимал, Сова объяснил (спасибо), думал они как воркеры работают
Sheldhur
подойдет обычный worker на самом деле
а доступ к апи будет? сейкюлайз тот же подключить, а то в соседнем чяте обсуждали просто web worker, у него с этим проблемы как я понял
Sheldhur
спсб, поковыряю
Sheldhur
так и как замутить процесс прерывания? избавляться от Promise.all и делать простые циклы?
Sergey
скорее всего организовывать инсерт пачками
Sergey
и перед каждым инсертом проверять условие
Sergey
типа if (!this.break) db.insert
Sergey
но это так, примерное
Sheldhur
а воркер прибить можно же? или он продолжит молотить пока всё не сделает?
Sergey
а воркер прибить можно же? или он продолжит молотить пока всё не сделает?
на счет этого не знаю, но это не очень хорошая практика
Sergey
в любом случае нужно знать сколько ты уже инсертнул, иначе дубликаты
Sheldhur
у меня unique индексы, оно просто не вставится второй раз
Sergey
но ошибочки будут)
Sheldhur
ну их можно обработать :3
Sergey
ну лишняя логика к примеру, пихаешь 5К записей отменил после вставки 4К запускаешь снова, и ждешь пока пройдут 4К запросов на существующие записи
Sergey
такое себе, не правда ли?
Sheldhur
ну да
Sergey
лучше делить на пачки, по 50-100 запросов (экспериментально подбирается) и составлять список не вставленных, чтобы можно было повторить
Sergey
Надо смотреть как работает electron-workers
Sheldhur
ога, сервак поднимает
Sergey
я вообще имел ввиду webWorker
Sergey
но похоже webworkers в электроне не алё
Sergey
ибо не thread-safe
Sergey
видимо да, придется ещё один процесс поднимать
Sergey
ЧЯДНТ? почему он ищет свободный порт? я же выбрал ipc https://pastebin.com/FrKqG7hj
IPC — межпроцессное взаимодействие. таки портами же
Sheldhur
чёт пишут, что это какие-то траблы электрона и spawn
Sergey
Чет да
Sergey
Ты писал что электрон самопадает?
Sheldhur
нет
Sergey
короче я тоже видел такое же падение
Sheldhur
но похоже webworkers в электроне не алё
this? Any native Node.js module can be loaded directly in Web Workers, but it is strongly recommended not to do so. Most existing native modules have been written assuming single-threaded environment, using them in Web Workers will lead to crashes and memory corruptions. Note that even if a native Node.js module is thread-safe it's still not safe to load it in a Web Worker because the process.dlopen function is not thread safe. The only way to load a native module safely for now, is to make sure the app loads no native modules after the Web Workers get started.
Sergey
ага
Sheldhur
https://github.com/electron/electron/blob/master/docs/tutorial/multithreading.md
Sheldhur
а что может пойти не так?
Sheldhur
работа с базой будет внутри воркера, где-то в другом месте в это же время к базе вряд ли будет какое-то обращение
Sergey
классические проблемы параллельности
Sergey
с базой это самый простой пример
Sergey
но решается легко — транзакции и атомарность
Sheldhur
nodeIntegrationInWorker только только добавили, я так понял мне надо до 1.6.4 обновиться, а в npm 1.6.2
Sheldhur
ага
как 1.6.4 поставить?
Sheldhur
npm install --save-dev electron@1.6.4?
Sheldhur
npm install --save-dev electron@beta
Sheldhur
latest 1.6.2
Sheldhur
или бету не стоит трогать?
Sergey
Да ну
Sergey
сделай в консоли npm info electron
Sergey
и промотай до версий вверх
Sergey
у меня последняя 1.6.4
Sergey
[v
Sergey
хм, действительно бета
Sergey
слушай, так как ты только разрабатываешь, ставь бету
Sergey
главное чтобы к выпуску твоей прилажки, версия перестала быть бета
Sheldhur
чёт не робит :с Uncaught Error: ENOENT, worker\api\exports\electron.js not found in C:\Users\Sheldhur\WebstormProjects\Vector\node_modules\electron\dist\resources\electron.asar
Sergey
файл найти не может
Sheldhur
https://github.com/electron/electron/tree/master/lib/worker
Sheldhur
пусто
Sheldhur
не завезли видимо ещё
Sergey
странно =(
Sheldhur
буду пилить синхронное выполнение INSERT'ов, и надеяться, что в api скоро завезут
Sheldhur
или можно что-то ещё сделать?
Sergey
заспаунить чайлд процесс
Sheldhur
не делается
Sergey
как в обычной ноде
Sheldhur
эм...
Sheldhur
ну я в в мейн процессе пробовал var electron = require('electron') var proc = require('child_process') // will print something similar to /Users/maf/.../Electron console.log(electron) // spawn Electron var child = proc.spawn(electron)