
Andrey
04.04.2017
01:20:38
Тем более, волонтёры развоз устроили.
Хотя не знаю, я в центре не присутствовал вчера.

Serge
04.04.2017
01:22:25

Google

Serge
04.04.2017
01:23:47
Все на колесах стояло
Ну и многие не спешили снова в метро, это да
И завтра опять. Синяя ветка кусками - это жесть.

Andrey
04.04.2017
01:25:46

Serge
04.04.2017
01:27:16
Ещё раз. Это я всё к вопросу, что не затронуло. Косвенно очень многих затронуло. И вот волонтеры им и помогали. Я только об этом

I
04.04.2017
04:03:56

Никита
04.04.2017
06:41:19
А я вчера топал ножками с васьки. В районе метро лиговского смог сесть на обещанный м5

Olya
04.04.2017
06:43:52
сегодня утром море машин (сильно больше обычного), а транспорт пустой. И много велосипедистов. Люди очень напуганы, это ощущается

I
04.04.2017
07:01:07
ну я всегда топил за велики
в Минске на днях был - просто глаза радовались - через весь город велодорожки, люди по ним не ходят(по рассказам жителей, пешехода за столкновение с великом на велодорожке штрафуют хорошо)

Roman
04.04.2017
07:15:50

Google

Александр
04.04.2017
07:25:08

Никита
04.04.2017
07:25:48
Многие поглядывают на пакеты/сумки

Александр
04.04.2017
07:27:50

Никита
04.04.2017
07:28:45
Кстати по поводу вчерашнего треда с rq
rq крутой, но надо очень осторожно общаться с Job.meta. в доках пишут, что мол это для всякой мета-информации (количество обработанных юнитов етц), однако перезатирается когда job выполняется, ибо дергается save, и если ты туда что то писал во время выполнения (ну там чтобы отобразить в лайв режиме что нибудь) то очень просто все потеряешь)
ну и кастомайзить проще сам голый rq, не через flask/django прослойки, как выяснилось
да, я супер-вовремя


Eugene
04.04.2017
09:33:14
Такой вопрос на счёт rq. Если я хочу использовать очередь задач и планировщик (rq-scheduler), мне их подключать к разным базам или можно к одной?
Попробовал подключить к одной и начались странные вещи, задача из планировщика начала выполняться как из рога изобилия с очень коротким интервалом, при том, что выставил для задачи 60 секунд, пришлось делать базе FLUSHALL.
Сейчас сделал так:
conn1 = Redis()
conn2 = Redis()
task_queue = Queue(connection=conn1)
task_scheduler = Scheduler(connection=conn2)
И вроде работает правильно. Что я тут не понимаю? Или понимаю не так?
Похоже, что я всё понимаю не так, потому что оно опять сломалось :)

Vitali K.
04.04.2017
21:30:29
Мне кажется логичным что к одной :)

Eugene
04.04.2017
21:31:32
И мне так показалось, но что-то работает криво, а что именно я не могу понять пока.

Александр
04.04.2017
21:32:24
Не оно?
https://github.com/ui/rq-scheduler/issues/49

Eugene
04.04.2017
21:33:27
Похоже, что нет, я запускаю задачу вот так:
rconn = Redis()
task_scheduler = Scheduler(connection=rconn)
task_scheduler.schedule(
scheduled_time=datetime.utcnow(),
func=tasks.notify,
interval=30,
repeat=10
)
И эта задача начинает сыпаться очень часто и бесконечно

Vitali K.
04.04.2017
21:35:12
у меня с другим пакетом была похожая пробема когда tasks.notify кидал исключение
шедулер считал, что если случилось исключение, то немедленно нужно зашедулить еще разок
и так бесконечно)

Eugene
04.04.2017
21:36:24
У меня эта функция шлёт post запрос на некоторый адрес и он проходит. И он бесконечно его шлёт и очень быстро.

Roman
04.04.2017
21:37:02
Только будет печалька, если редис умрет

Vitali K.
04.04.2017
21:38:00
http://python-rq.org/docs/monitoring/

Google

Vitali K.
04.04.2017
21:38:41
кол-во тасок можно посомтреть

Eugene
04.04.2017
21:39:13
когда оно начало так странно работать, я не мог остановить выполнение этой задачи. Пока не сделал FLUSHALL. До этого как только запускал rqscheduler, он начинал выполнять эту задачу.

Vitali K.
04.04.2017
21:45:00
Я бы предпочитал FLUSHDB - очищает только текущую базу

Eugene
04.04.2017
21:45:27
Да, я знаю, но у меня там больше нигде не используется redis

Vitali K.
04.04.2017
21:46:46
у меня есть теория)
task_scheduler.schedule у тебя записан не в main()
и когда воркер форкает процесс он импортит модули и снова выполняется task_scheduler.schedule

Eugene
04.04.2017
21:47:13
А это может быть из-за того, что я создавал объект планировщика и добавлял задачу в модуле, где создаётся экземпляр flask-приложения?
О! Ты как раз об этом!
Похоже именно в этом и дело.

Vitali K.
04.04.2017
21:48:21
бугага. я бог траблшутинга ?

Александр
04.04.2017
21:48:53

Eugene
04.04.2017
21:50:23
По мне так, очень неочевидно! Если мне надо запланировать задачу на старте приложения, получается, нужно делать это в main

Александр
04.04.2017
21:50:41
Почему вообще такая магия происходит ?

Vitali K.
04.04.2017
21:51:10
Это не магия. Так просто делать нельзя
Если тебе папку создать надо, тв же не будешь писать это в модуле не в функции?
Иначе при импорте твоего модуля кто-то неожиданно получит взаимодействие с файловой системой

Eugene
04.04.2017
21:53:39
Ага, количество логики на этапе импорта должно быть минимальным, а то такая "магия" может случиться.

Google

Vitali K.
04.04.2017
21:53:44
У меня коллега как-то автообновления какого-то xml сделал. При импорте модуля скачивался файл из интернета и писался на диск ?

Serge
04.04.2017
21:54:11

amureki
04.04.2017
21:55:00

Eugene
04.04.2017
21:55:18
Да вот в первый раз когда всё это щупаешь, всё кажется сложным.

Serge
04.04.2017
21:55:33

amureki
04.04.2017
21:56:28

Admin
ERROR: S client not available

Vitali K.
04.04.2017
21:56:30
Так проблема была не с RQ связана :)

Serge
04.04.2017
21:57:11
Да вот в первый раз когда всё это щупаешь, всё кажется сложным.
первый раз когда я трогал селери, я второй раз начал его трогать и настраивать через пол годика где-то, когда в проде хоть что-то осмысленное началось. а так оно просто работало. и кстати, оно вполне отлично работает без рэбита. до сих пор на редисе и ни разу это не стало ботлнеком

amureki
04.04.2017
21:58:17
Да, пардон
С бара иду, несколько не функционирую

Eugene
04.04.2017
22:02:20
Да, проблема была в моих кривых руках и нехватке времени, чтобы нормально разобраться. Слишком много информации помимо этого. С OAuth разбирался пол дня и так и не придумал, как лучше и безопаснее всего хранить полученные токены, храню в ini файле пока это прототип ?

Dmitry
04.04.2017
22:14:33
> храню токены в ini файле
штаа

Eugene
04.04.2017
22:16:08
Ну мне было лень :) Скажем, в базе хранить безопаснее?
Их же надо где-то хранить, иначе как их использовать потом?

Dmitry
04.04.2017
22:21:18
да причём здесь секьюрность, емнип спека oauth2 ничего не говорит где должны лежать токены
> as well as any access token issued to the client are stored on the web server and are not exposed to or accessible by the resource owner.
просто ини это как-то совсем уже по трешу. У тебя же редис под рукой
и зачем ты это сам делаешь, неужели не взять auth backend готовый, умеющий в oauth2? Много раз ведь нам произнёс про нехватку времени

Google

Denis
04.04.2017
22:22:26
Это шутка, если что

Eugene
04.04.2017
22:24:22

Denis
04.04.2017
22:24:28
Ну ини да, пахнет душком, но тот же конфиг, что модуль с константами

Dmitry
04.04.2017
22:24:45

Eugene
04.04.2017
22:24:47
ini - это и есть конфиг с константами

Denis
04.04.2017
22:24:58

Eugene
04.04.2017
22:25:38
Да, flask приложение, но оно у меня чисто как сервис, никаких html страниц там нет в том смысле, что пользователь его не видит.

Denis
04.04.2017
22:26:13

Dmitry
04.04.2017
22:26:21
Дак если юзер не видит и вообще сервис-прототип, может basic http auth? Тебе по задаче нужна oauth?

Eugene
04.04.2017
22:27:59
> Тебе по задаче нужна oauth?
Да, это Slack приложение.
https://api.slack.com/slack-apps
И за 1 день поднять инфу обо всём что там накручено довольно сложно, особенно когда это не твоя предметная область. :)

Denis
04.04.2017
22:29:14

Dmitry
04.04.2017
22:30:15

Eugene
04.04.2017
22:31:22
Вот у них пример типа
http://slackapi.github.io/python-slackclient/auth.html#the-oauth-flow
Они там не пишут где хранить токены.

Dmitry
04.04.2017
22:31:37