@rudepython

Страница 8 из 1719
Alexey
05.07.2016
10:52:59
добро пожаловать в ад.

Roman
05.07.2016
10:54:10
root mode :)

Dmitry
05.07.2016
10:59:37
хулитут?

Alexey
05.07.2016
10:59:46
уют, птички поют.

Google
Roman
05.07.2016
11:00:19
алексей, а ты каким боком с tarantool?

Alexey
05.07.2016
11:00:28
пришёл читать чист.

Roman
05.07.2016
11:09:18
пыщь

привет, пацаны!

Alexey
05.07.2016
11:09:34
содащька, пущь-пущь-пущь.

хулитут?
@pragus тоже в админы закидывай.

натурально сейчас всю руснетную бригаду соберём.

Dmitry
05.07.2016
11:10:19
щас испытательный срок пройдет, ггг

Alexey
05.07.2016
11:10:39
ну чо ты начел-то сразу.

рейдж — бро.

надо же и его забесплатно припахать что-нибудь делать `8)

Roman
05.07.2016
11:11:16
щас испытательный срок пройдет, ггг
чочо?! я помню, как ты всех девочек с 8м марта поздравлял на #solaris

Dmitry
05.07.2016
11:25:33
долго на лохочатике питона сидел, надо дезинфецировать в бочке с хлоркой )

Google
Andrey
05.07.2016
13:32:58
Пагни

Roman
05.07.2016
13:33:11
wazzup?

Andrey
05.07.2016
13:33:22
есть трабла, фронтендовая. есть смысл ее тут озвучить?

Roman
05.07.2016
13:33:35
спроси и будет видно

don't ask to ask

Andrey
05.07.2016
13:37:26
Короче, есть админка у которой есть какие-то фоновые асинхронные задачи. JS бегает раз в 10 секунд и получает статус фоновых задач. Если статус задачи != started, то пользователю в ебач отдается нотификация (через noty.js). проблема с тем, что если открыто больше одной вкладки, то это нотификация может отобразиться на любой из вкладок (т.к. другая страница может раньше запросить данные по задачкам чем активная вкладка). В общем вопрос как лучше сделать нотификацию на всех вкладках?

ws не могу использовать. ограничивать пользователя одной вкладкой не могу. после того как фронтду вернулся статус задачи он (статус задачи) удаляется и другая вкладка, при слудующем запросе его уже не получит

Я пока придумал только localStorage. писать в него и отслеживать. Но какое-то костыльное решение

Roman
05.07.2016
13:41:27
раз у тебя единый стородж на сервере удаляет задачу, то юзать единый сторадж на клиенте вполне себе кошерное решение, пока ты не решишь чтоб нотификация отображалсь во всех вкладках всех браузеров на всех машинах всех пользователей

вообще это аццкое зло - удалять статус

Andrey
05.07.2016
13:43:13
просто есть ли гарантия, что событие о добавлении в localStorage упадет во все вкладки одновременно

Roman
05.07.2016
13:43:14
это тогда не статус

а зачем тебе событие о добавлении в localStorage?

сервер пусть чекает одна задача, а сторадж - другая

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

Andrey
05.07.2016
13:44:28
так а удалять из локалстораджа тогда как?

Roman
05.07.2016
13:45:04
не надо тебе из стораджа удалять сейчас, как не надо было и прежде

Andrey
05.07.2016
13:45:05
setInterval тем и плох что у разных вкладок будет отрабатывать в разное время

H
05.07.2016
13:45:26
а почему ты не можешь юзать сокеты?

Roman
05.07.2016
13:46:02
я бы сразу правильно сделал при работе с сервером, но потом может пришёл бы к работе со стораджом, чтоб оптимизировать запросы к серверу

Google
Andrey
05.07.2016
13:47:09
а почему ты не можешь юзать сокеты?
потому что не хотим ставить рядом еще какой-то сервис просто для проверки статусов

H
05.07.2016
13:47:47
а, костыли хотите ставить? ну ок

Roman
05.07.2016
13:48:08
давай посмотрим на сторадж, ты положил туда data, и воркеры из разных вкладок ломанулись к data по расписанию. рядом с data положи время её создания, воркер который спрашивает из localStorage пусть запоминает время последнего своего обращения. Так как всё на одной машине, то у всех время уже синхронизировано и показывай уведомление тем, кто последний раз обращался раньше, чем положили data

Andrey
05.07.2016
13:48:23
т.е. городить вебсокеты ради одной задачи это не костыль

H
05.07.2016
13:48:42
городить? это задача для вебсокетов

у тебя ж там какой-то фреймворк, как я понимаю, на бекенде

Andrey
05.07.2016
13:49:10
pyramid

городить? это задача для вебсокетов
это задача решалась и до создания вебсокетов, лонг пулингов и т.д. тут просто нужна правильная логика

H
05.07.2016
13:50:45
чета он не очень умеет в вебсокеты, не работал с ним

H
05.07.2016
13:51:05
у тебя ж там клиенты авторизованы, которые с несколькими вкладками?

Roman
05.07.2016
13:51:14
и что?

Andrey
05.07.2016
13:51:20
и что?
новый воркер, для которого нет записей о показе сообщений > показывает снова

Roman
05.07.2016
13:52:07
нет

у него первое обращение к storage идёт от текущей даты, а она позже записи в localStorage

Andrey
05.07.2016
13:52:49
чета он не очень умеет в вебсокеты, не работал с ним
пирамида не умеет, это обычный синхронный HTTP

Roman
05.07.2016
13:53:06
pyramid - WSGI приложение

H
05.07.2016
13:53:13
а если хранить все на сервере? отсылай из жса токен юзера + таймстамп

Google
Roman
05.07.2016
13:53:48
wow-wow-wow, так гляди ещё и правильно не сделает. полегче

H
05.07.2016
13:54:09
yup

Andrey
05.07.2016
13:54:21
Roman
05.07.2016
13:54:22
стейт не должен удаляться из-за факта его прочтения

Roman
05.07.2016
13:54:40
с localStorage у тебя стейт ещё и на клиенте

H
05.07.2016
13:54:41
за синхронизацию должен отвечать кто-то один, а не браузер, имхо

Roman
05.07.2016
13:54:51
нарушается принцип идемпотентности

Andrey
05.07.2016
13:55:11
Admin
ERROR: S client not available

Roman
05.07.2016
13:55:28
так что смотри на дату обращения и дату добавления

так не прийдётся городить дополнительных флагов для синхронизации

Roman
05.07.2016
13:55:44
> Если статус задачи != started, то пользователю в ебач отдается нотификация (через noty.js). ну так и отображай это на клиенте

зачем мне на бэке хранить стейт который не нужен на бэке?
у тебя уже есть стейт в виде состояния таска.

Andrey
05.07.2016
13:56:12
так я и отображаю, но только в той вкладке которая первая получила эти данные

у тебя уже есть стейт в виде состояния таска.
нет, на бэке он не хранится и не должен

Roman
05.07.2016
13:56:29
потому что остальные не получают в ответе информации

wow

started откуда берётся?

Andrey
05.07.2016
13:57:12
фоновые задачи это таски сэлери

Google
Roman
05.07.2016
13:57:30
фоновые задачи это таски сэлери
оке. и как ты узнаешь о состоянии таски?

H
05.07.2016
13:57:35
ну так они ж на сервере или во фронте?

Andrey
05.07.2016
13:57:42
статус я получаю через стандартные методы сэлери

Roman
05.07.2016
13:58:07
задача не про фронт )

Roman
05.07.2016
13:58:13
статус я получаю через стандартные методы сэлери
и чо, они у тебя в браузере хранятся или же всё-таки на сервере?

Andrey
05.07.2016
13:58:40
они у меня храняться в сессии пользователя, это не персистент хранилище по факту

это не критикал данные, зачем хранить их в базе

Roman
05.07.2016
13:59:28
итить колотить

Andrey
05.07.2016
13:59:53
это не результат выполнения задачи, а ее статус

Dmitry
05.07.2016
14:00:41
люблю этот чатик. не то что тот девочковый.

H
05.07.2016
14:01:19
блять, ну это же статус задачи на сервере

я на тебя смотрю как ты смотришь с аватарки

Roman
05.07.2016
14:01:46
=))

Andrey
05.07.2016
14:02:19
блять, ну это же статус задачи на сервере
чувак, в данной системе это не критикал данные. Трекинг данных, которые изменяются в этих тасках отдельный, с ним все ок

H
05.07.2016
14:03:15
да не, ок, ебись с синхронизацией на фронтеде

Andrey
05.07.2016
14:03:15
задау можно упростить: как показать нотифай во всех открытых вкладках, если какая-то из вкладок первая запросила статус задачи

Andrey
05.07.2016
14:04:42
Roman
05.07.2016
14:04:44
лол ну да. Давайте плодить сущности в базе. все понял спасибо
факинщит, ну какие сущности в базе? ну храни ты у пользователя где-то id таска и спрашивай "а что там с этим таском?".

Roman
05.07.2016
14:06:29
1. юзай localStorage и храни там флаги в виде timestamp обращение на исполенение 2. в каждой вкладке пусть будут воркеры, которые ломятся на сервер, но обращаются не чаще, раза в 10 секунд, дату последнего обращения пусть берут из localStorage, туда же пусть и пишут, в случае обращения к серверу 3. там же помести воркеры на отображение данных из localStorage и так же синхронизируйся по датам у тебя останется вопрос, как вычистить данные из localStorage, но это уже другая задача. p.s. worker - это setTimeout loop

Страница 8 из 1719