@electron_ru

Страница 19 из 177
Сергей
29.03.2017
08:27:56
во вторых, чтобы иметь возможность остановить инсерт, не нужно в .map перебирать, его не прервать

Спасибо, а то я сегодня хотел его заюзать
cluster хорош для создания кластера и не больше )

Sergey
29.03.2017
08:29:04
cluster хорош для создания кластера и не больше )
Наверное я не так понимаю кластеры) я думал что это запускается новый демон ноды и ему передаются задачи

Alex
29.03.2017
08:30:01
Наверное я не так понимаю кластеры) я думал что это запускается новый демон ноды и ему передаются задачи
А зачем в данном случае кластер, если можно просто породить дочерний процесс для выполнения конкретной задачи вставить в базу кучу данных?

Google
Сергей
29.03.2017
08:30:26
Наверное я не так понимаю кластеры) я думал что это запускается новый демон ноды и ему передаются задачи
cluster имеет два варианта раннеров Запускается один и тот же файл в котором есть условия, что исполнять для мастер процесса, а что для слейва мастер просто запускает несколько дочерних процессов и собирает с них данные

Alex
29.03.2017
08:31:05
А если обратная связь нужна?
А как в случае кластера эта проблема решается?

Sergey
29.03.2017
08:32:04
А как в случае кластера эта проблема решается?
Хз, я их не так понимал, Сова объяснил (спасибо), думал они как воркеры работают

Sheldhur
29.03.2017
08:32:07
подойдет обычный worker на самом деле
а доступ к апи будет? сейкюлайз тот же подключить, а то в соседнем чяте обсуждали просто web worker, у него с этим проблемы как я понял

Sheldhur
29.03.2017
08:37:08
спсб, поковыряю

так и как замутить процесс прерывания? избавляться от Promise.all и делать простые циклы?

Сергей
29.03.2017
08:38:53
скорее всего организовывать инсерт пачками

и перед каждым инсертом проверять условие

Google
Сергей
29.03.2017
08:39:19
типа if (!this.break) db.insert

но это так, примерное

Sheldhur
29.03.2017
08:40:18
а воркер прибить можно же? или он продолжит молотить пока всё не сделает?

Сергей
29.03.2017
08:41:13
а воркер прибить можно же? или он продолжит молотить пока всё не сделает?
на счет этого не знаю, но это не очень хорошая практика

в любом случае нужно знать сколько ты уже инсертнул, иначе дубликаты

Sheldhur
29.03.2017
08:42:21
у меня unique индексы, оно просто не вставится второй раз

Сергей
29.03.2017
08:43:44
но ошибочки будут)

Sheldhur
29.03.2017
08:44:29
ну их можно обработать :3

Сергей
29.03.2017
08:45:39
ну лишняя логика к примеру, пихаешь 5К записей отменил после вставки 4К запускаешь снова, и ждешь пока пройдут 4К запросов на существующие записи

такое себе, не правда ли?

Sheldhur
29.03.2017
08:46:39
ну да

Сергей
29.03.2017
08:47:46
лучше делить на пачки, по 50-100 запросов (экспериментально подбирается) и составлять список не вставленных, чтобы можно было повторить

Сергей
30.03.2017
07:33:13
Надо смотреть как работает electron-workers

Sheldhur
30.03.2017
07:35:53
ога, сервак поднимает

Сергей
30.03.2017
07:36:09
я вообще имел ввиду webWorker

но похоже webworkers в электроне не алё

ибо не thread-safe

видимо да, придется ещё один процесс поднимать

ЧЯДНТ? почему он ищет свободный порт? я же выбрал ipc https://pastebin.com/FrKqG7hj
IPC — межпроцессное взаимодействие. таки портами же

Google
Sheldhur
30.03.2017
08:06:40
чёт пишут, что это какие-то траблы электрона и spawn

Сергей
30.03.2017
08:08:40
Чет да

Ты писал что электрон самопадает?

Sheldhur
30.03.2017
08:10:35
нет

Сергей
30.03.2017
08:11:04
короче я тоже видел такое же падение

Sheldhur
30.03.2017
09:03:45
но похоже 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.

Сергей
30.03.2017
09:04:11
ага

Sheldhur
30.03.2017
09:04:12
https://github.com/electron/electron/blob/master/docs/tutorial/multithreading.md

а что может пойти не так?

работа с базой будет внутри воркера, где-то в другом месте в это же время к базе вряд ли будет какое-то обращение

Сергей
30.03.2017
09:06:19
классические проблемы параллельности

с базой это самый простой пример

но решается легко — транзакции и атомарность

Sheldhur
30.03.2017
09:45:07
nodeIntegrationInWorker только только добавили, я так понял мне надо до 1.6.4 обновиться, а в npm 1.6.2

ага
как 1.6.4 поставить?

npm install --save-dev electron@1.6.4?

Сергей
30.03.2017
09:48:37
Sheldhur
30.03.2017
09:49:00
npm install --save-dev electron@beta

latest 1.6.2

или бету не стоит трогать?

Google
Сергей
30.03.2017
10:01:05
Да ну

сделай в консоли npm info electron

и промотай до версий вверх

у меня последняя 1.6.4

[v

хм, действительно бета

слушай, так как ты только разрабатываешь, ставь бету

главное чтобы к выпуску твоей прилажки, версия перестала быть бета

Sheldhur
30.03.2017
10:15:27
чёт не робит :с Uncaught Error: ENOENT, worker\api\exports\electron.js not found in C:\Users\Sheldhur\WebstormProjects\Vector\node_modules\electron\dist\resources\electron.asar

Сергей
30.03.2017
10:33:33
файл найти не может

Sheldhur
30.03.2017
10:43:43
https://github.com/electron/electron/tree/master/lib/worker

пусто

не завезли видимо ещё

Сергей
30.03.2017
10:48:12
странно =(

Sheldhur
30.03.2017
10:54:26
буду пилить синхронное выполнение INSERT'ов, и надеяться, что в api скоро завезут

или можно что-то ещё сделать?

Сергей
30.03.2017
10:56:07
заспаунить чайлд процесс

Sheldhur
30.03.2017
10:56:19
не делается

Сергей
30.03.2017
10:56:20
как в обычной ноде

Sheldhur
30.03.2017
10:56:33
эм...

Google
Sheldhur
30.03.2017
10:58:19
ну я в в мейн процессе пробовал 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)

кидало эксепшен на спанв

TypeError: Bad argument

Сергей
30.03.2017
11:02:31
так это

ему же строка нужна

путь к файлу

или имя команды которую запустить

почитал бы доку ноды

https://nodejs.org/api/child_process.html#child_process_child_process

Sheldhur
30.03.2017
11:05:23
о_О это из доки самого электрона

Сергей
30.03.2017
11:06:03
электрон на ноде основан

Sheldhur
30.03.2017
11:06:07
ну

лан, попробую ещё потом

через electron-workers

Сергей
30.03.2017
14:58:17

Страница 19 из 177