@nodejs_ru

Страница 848 из 2748
Ilya
06.06.2017
19:43:51
да. юники вешает

простые индексы нет

1 модели с униками есть и их sync создавал

а. короче. если в миграции рисуешь таблицу там индексы не делает. бага в этом

Google
Ilya
06.06.2017
19:46:29
хотя может они задокументировали createTable через жопу

Anton
06.06.2017
20:16:59
https://github.com/Glavin001/graphql-sequelize-crud найс, если кто еще собирается юзать graphQL и sequelize в одном проекте)

Никита
06.06.2017
20:25:39
Кто-нибудь слаком пользуется?

У меня слак лежит, а статуспейдж говорит что всё блестит и работает.

Eugene
06.06.2017
20:27:52
Тоже не конектит

Vsevolod
06.06.2017
20:29:16
не пашет слак

Anton
06.06.2017
20:39:01
ага, не пашет

а теперь пашет, лол

Node.js releases
06.06.2017
21:00:34
Node v6.11.0 (LTS) https://nodejs.org/en/blog/release/v6.11.0

Mikhail
06.06.2017
21:05:04


Ребят, а как лучше реализовать формирование крон задач из постоянно меняющегося массива инфы? Есть такая конструкция, но постоянно прибавляются записи. Если постваить саму конструкцию в крон задачу, не будут ли дублироваться дочерние крон задачи?

Google
Mikhail
06.06.2017
21:08:07
постоянно меняющихся это как?
У меня в функционале предусмотрено, что записи будут пополняться с ключом *:notifications

Ilya
06.06.2017
21:08:07
если совпало - убиваешь кронжоб и создаешь новый

заново.

Ilya
06.06.2017
21:08:51
у меня есть похожий функционал - но я там кроны перегружаю на изменении файлов в каталоге

Mikhail
06.06.2017
21:09:09
Я по github/node-cron не нашел, как удалить кронджоб или получить их список

Ilya
06.06.2017
21:10:11
ну я сделал вот таку. херь

class Task{ constructor(config) { this.failed = true; if (!config.schedule) throw new Error('No schedule in config'); /* * Seconds: 0-59 Minutes: 0-59 Hours: 0-23 Day of Month: 1-31 Months: 0-11 Day of Week: 0-6*/; this.cronJob = new CronJob( config.schedule, ()=> { this.run().catch( (error)=> { console.warn('CRON: error', error); }); }, ()=> { this.stopRun(); }, false ); this.failed = false; // other parts of config you rework manually } isAllCorrect() { return !this.failed; } // system start of cron job. must return promise start() { this.cronJob.start(); } // stop if cron job stop() { this.cronJob.stop(); } /** * This method runs when cron fired */ run() { // here you write your user code throw new Error('Child class must override run method'); } /** * This metod runs when CronJob#stop is called * May be your running task want know when user stop them */ stopRun() { // here you write your user code throw new Error('Child class must override run method'); } }

свою обертку для контроля

потом джобы наследую от нее

Ilya
06.06.2017
21:11:43
ну и делаю структуры которы контролируют и хранят ЧТО запустил

new CronJob вникуда это хуевая практика

т.е. ты джоб создал а контроля не имеешь

короче хранить массив джобов надо + держать WeakMap для поиска схожих джобов чтобы не задвоить говно

я через обертку сделал

мне хотелось чтобы если я новый код крона создал и положил в папку - приложение чтобы его подняло

ну или конфиг воркера какого поменял - приложение чтобы убило джоб и новый создало

Mikhail
06.06.2017
21:16:05
А хотя можно делать в том же редисе записи, какие крон джобы активны, а какие — нет\

Ilya
06.06.2017
21:16:14
пиздец

Google
Mikhail
06.06.2017
21:16:15
Чтоб не задублировать

Так неудобно, что нет ни листа, ни удаления кронджобов

А то они летят и ничгео не делать с ними дальше

Ilya
06.06.2017
21:16:43
а в редисе зачем? у тебя все в нескольких воркерах вертится?

Mikhail
06.06.2017
21:17:12
воркер — проект?

Ilya
06.06.2017
21:17:39
воркер это отдельный fork или инстанс приложения

я ебу чем ты там многопоточность делаешь?

если вообще делаешь

у меня socketcluster и пока нет нагрузки я кроны гоняю из основного процесса. потому что не пригружают. будет хуево - буду в workerpool закидывать.

если ты кроны гоняешь в основном потоке и масштабирования не предвидится - ну так учитывай их руками.

Mikhail
06.06.2017
21:20:07
окей, спасибо

Ilya
06.06.2017
21:20:28
так что у тебя вся каша в 1 поток?

Ilya
06.06.2017
21:20:43
на одном ядре?

Mikhail
06.06.2017
21:21:51
многопоточность ты имеешь ввиду для создания кронджобов?

я не совсем тебя понимаю.

Ilya
06.06.2017
21:23:16
ну я имею в виду то что масштабировать приложение на несколько ядер CPU не предвидится?

Mikhail
06.06.2017
21:23:39
не предвидется

это всего лишь вк бот

Ilya
06.06.2017
21:24:15
лол. а в редис то зачем тогда класть?

через жмеринку на париж

Google
Mikhail
06.06.2017
21:25:07
а как по-другому запускать кронджбоы? вот у меня есть функционал, что бот рассылает уведомления

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

но если рестартнется бот, то все проебется

Ilya
06.06.2017
21:25:34
обертку делать и складывать в нее

а. ну если только для этого

а если редис накернется?

Admin
ERROR: S client not available

Mikhail
06.06.2017
21:26:10
а если редис накернется?
то вообще уходить нужно из программирования

а вообще если бы, да ка бы

вероятность, что упадет редис куда меньше, чем вероятность, что я перезапущу бота

Ilya
06.06.2017
21:26:40
ну тут ты прав.

хотя может тебе кронжоб не нужен?

Mikhail
06.06.2017
21:27:32
а как по-другому реализовывать?

Ilya
06.06.2017
21:27:44
или надо ровно в какойто момент отсылать?

Mikhail
06.06.2017
21:27:48
да, именно

Ilya
06.06.2017
21:28:36
ну тогжа храни в бд.

хотя я бы в 1 таск все объединял назначенное на 1 время и делал обертки

Sergey
07.06.2017
03:59:29


MadMax
07.06.2017
05:05:29
Ребят, а как файл загрузить?

На сервер...

Google
MadMax
07.06.2017
05:05:38
Какой метод?

Че то пост нифига не помогает

Nikita
07.06.2017
05:18:48
Ну если это картинка в целом можно просто кидать base64 строкой, но есть поля для файлов и допустим в той же пыхе был отдельный глобальный массив $_FILES. Если используешь експресс, то в оф доке есть такая подсказка - попробуй что-то из перечисленных либ In Express 4, req.files is no longer available on the req object by default. To access uploaded files on the req.files object, use multipart-handling middleware like busboy, multer, formidable, multiparty, connect-multiparty, or pez. (линк с якорем http://expressjs.com/ru/4x/api.html#req) (не думаю что помог, но лучш чем игнор :с)

MadMax
07.06.2017
05:19:27
Спасибо большое

Nikita
07.06.2017
05:19:38
?

Таймураз
07.06.2017
06:00:23
Потому что его нужно выполнить

Konstantin
07.06.2017
06:04:08
А вот как бы не по теме, но, зачем тебе сеттаймаут в промисе? О_о

Таймураз
07.06.2017
06:04:39
А вот как бы не по теме, но, зачем тебе сеттаймаут в промисе? О_о
Чтобы сэмулировать время, потраченное на работу

Konstantin
07.06.2017
06:05:02
так а где async? промисы не совсем так работают.

ааа, увидел

Таймураз
07.06.2017
06:06:11
Он создал промис, но не вызвал его

Konstantin
07.06.2017
06:09:59
попробуй вызвать его в резолве

var original = Promise.resolve(true); var cast = Promise.resolve(original);

Таймураз
07.06.2017
06:12:05
А, await же вызывает промис

Konstantin
07.06.2017
06:12:29
эвэйт ждёт выполнения предыдущего

The await expression causes async function execution to pause, to wait for the Promise's resolution, and to resume the async function execution when the value is resolved. It then returns the resolved value. If the value is not a Promise, it's converted to a resolved Promise.

Таймураз
07.06.2017
06:13:47
Предыдущего? Ты о чем?

Konstantin
07.06.2017
06:14:20
Прочитай внимательно описание эвэйт. Сообщение выше

Страница 848 из 2748