@ru_python

Страница 3838 из 9768
b0g3r
27.09.2017
13:22:44
но про исключительные урлы надо подумать, да)

in favor
27.09.2017
13:23:03
Стоп

class BaseHandler(tornadohandler(забыл)) @login_required def get(self): pass

типа так, да?

Google
b0g3r
27.09.2017
13:23:55
не, декоратор на класс

in favor
27.09.2017
13:24:20
хм

Nikolay
27.09.2017
13:29:15
если тоже декоратор - ставь класс!

Aragaer
27.09.2017
13:29:52
если ты тоже любишь декораторы - подписывайся и ставь лайк

in favor
27.09.2017
13:31:19
не могу понять как манки патчнуть этот класс в декораторе?

Nikolay
27.09.2017
13:31:44
класс - легко, инстанс - никак

in favor
27.09.2017
13:34:23
так мы же патчим только один метод в классе, верно?

def p(cls): def inner(*args, **kwargs): res = cls(args, **kwargs) if res.request.is_auth ?? bla-bla

типа так чтоли?

@p class qwa() ...

Nikolay
27.09.2017
13:50:00
def p(cls): def inner(*args, **kwargs): res = cls(args, **kwargs) if res.request.is_auth ?? bla-bla
я что-то сомневаюсь, что res.request сработает

во фласке request - это глобальный тредлокал

Google
in favor
27.09.2017
13:50:29
мы про торнаду

Nikolay
27.09.2017
13:50:52
в торнаде не помню навскидку

in favor
27.09.2017
13:51:41
там реквест лежит в self

но в моей имплементации мы патчим все методы грубо говоря, нет?

Dmitriy
27.09.2017
13:52:03
Так а для чего декоратор?

in favor
27.09.2017
13:53:17
тут сказали, что в торнаде очень просто запилить хук, пропатчив сам класс декоратором

хочу узнать как правильно

Nikolay
27.09.2017
13:54:07
там реквест лежит в self
тогда через класс ты его не достанешь

in favor
27.09.2017
13:54:34
всмысле?

мы внутри замыкания создаём объект класса

короче тут нужен @aragaer, чтобы ответить что он имел ввиду

Max
27.09.2017
14:11:47
Господа, день добрый. Вопрос по flask-y. Считается ли нормальным в конфиге app.config хранить те данные, которые относятся сугубо к приложению и которые могут изменятся администратором сервиса? Хранение DB_URI и ADMIN_PASS это понятно, но у меня допустим есть пару парамтеров, которые влияют на бизнес-логику, и которые могут динамически (раз в неделю, в месяц) меняться администратором.

Второй вопрос - имеет ли смысл юзать для этих целей Redis?

Max
27.09.2017
14:16:26
а почему бы просто в yaml рядом файлик не положить?
Каждый раз при отрисовке шаблона читать из yaml - это дорого, надо кешировать, но я плохо понимаю контексты фласка. Мне ведь еще и писать нужно в ямл тогда.

писать в ямл иногда*

Max
27.09.2017
14:18:23
каждый и не надо. Поменял файл - тронул uwsgi-файлик
Тыкни пожалуйста носом, где это менять или что почитать на эту тему. Мне надо так, чтобы - я поменял ямл, в кеш записался новый результат из ямла, все следующие реквесты уже имели этот новый результат из кеша.

Кроме как в app.config писать у меня больше идей нет

Google
Nikolay
27.09.2017
14:19:07
это просто файлик, который мониторится демоном, и если ты сделаешь touch %filename% - uwsgi постарается максимально бесшовно перезапустить твое приложение, при этом ямл перечитается с диска

Max
27.09.2017
14:20:53
есть ли гарантия, что перезапускать он будет тогда, когда фласк не выполняет никакой задачи по юзеру?

Nikolay
27.09.2017
14:21:59
ну так легко же потестить

запусти приложуху, натрави на нее siege или ab, во время теста тачни файлик и смотри на число упавших реквестов

Max
27.09.2017
14:22:47
ну так легко же потестить
Ок, что делать, если гарантии предположим нет?

Чем конфиг в ямле лучше чем в ini или json например?

Nikolay
27.09.2017
14:26:03
Ок, что делать, если гарантии предположим нет?
ну вообще должно нормально сработать. Если не очень - то хранить конфиг в базе где-то, да, и периодически его оттуда подгружать

Чем конфиг в ямле лучше чем в ini или json например?
ничем особенно, просто json, имхо, менее удобно читать и править, а ini немного устарел, как формат

Max
27.09.2017
14:27:20
ну вообще должно нормально сработать. Если не очень - то хранить конфиг в базе где-то, да, и периодически его оттуда подгружать
Ок, спасибо. Я потому и задал вопрос про redis. Сам встречал колхозное решение хранения этого конфига в mysql.

Nikolay
27.09.2017
14:27:38
Max
27.09.2017
14:28:37
ну, оно не такое и колхозное, вполне бывают такие юзкейсы
там достаточно мало параметров (10-15) и было без кеша на стороне веб-приложения (понятно что база сама может закешировать, но без гарантии)

Timophey
27.09.2017
14:33:06
всем привет )

Nikolay
27.09.2017
14:33:41
всем привет )
http://neprivet.ru/

Timophey
27.09.2017
14:35:12
подскажите пожалуйста по timezone и datetime как правильно будет выглядеть время по мск с timezone ? import pytz from datetime import datetime current_timezone = pytz.timezone("Europe/Moscow") dn = current_timezone.localize(datetime.now())

получаю datetime.datetime(2017, 9, 27, 14, 30, 5, 388899, tzinfo=<DstTzInfo 'Europe/Moscow' MSK+3:00:00 STD>)

Nikolay
27.09.2017
14:36:39
Timophey
27.09.2017
14:36:56
в базе получается должно быть : 2017-09-27 14:30:5.388899+03 ?

Nikolay
27.09.2017
14:37:21
в базе получается должно быть : 2017-09-27 14:30:5.388899+03 ?
в базе все будет так, как ты туда запишешь, и смотря какой там тип данных

Google
Nikolay
27.09.2017
14:37:39
но вообще, судя по всему, да, как-то так

Timophey
27.09.2017
14:38:36
база postgres тип timestamp with timezone

Nikolay
27.09.2017
14:40:33
ну, там и будет timestamp с таймзоной, все верно

что тебе непонятно?

Timophey
27.09.2017
14:40:59
все теперь понял, спасибо, у меня проблемы теперь будут (

в должно время хранится UTC со смещением

если я хочу работать с разными зонами

Andrey
27.09.2017
14:42:18
в базе получается должно быть : 2017-09-27 14:30:5.388899+03 ?
ваще-т не выглядит правильным вот како-то так должно быть >>> import pytz >>> from datetime import datetime >>> datetime.now() datetime.datetime(2017, 9, 27, 17, 40, 30, 108807) >>> datetime.utcnow() datetime.datetime(2017, 9, 27, 14, 40, 42, 43982) >>> tz = pytz.timezone('Europe/Moscow') >>> tz.fromutc(datetime.utcnow()) datetime.datetime(2017, 9, 27, 17, 41, 20, 549218, tzinfo=<DstTzInfo 'Europe/Mos cow' MSK+3:00:00 STD>)

Admin
ERROR: S client not available

Timophey
27.09.2017
14:43:39
вот у меня такое же сомнение )

и теперь я опять запутался

время должно по utc ведь хранится и для него просто указывается +3 зона

или время указывается по конкретной зоне и дополняется смещением ?

Nikolay
27.09.2017
14:44:59
если надо UTC просто - то храни в UTC, а таймзону не пиши

Andrey
27.09.2017
14:47:55
время должно по utc ведь хранится и для него просто указывается +3 зона
есть naive datetime, а есть timezone aware datetime tz aware datetime состоит из 1) таймзоны 2) локального времени в этой таймзоне

localize берет naive dt и прилепляет к нему таймзону

если у тебя naive dt не локальное время в таймзоне, то получится херня

Timophey
27.09.2017
14:48:52
понял, спасибо

Max
27.09.2017
14:50:51
а почему бы просто в yaml рядом файлик не положить?
Сорри, я забыл уточнить. Ты предлагаешь то что в yaml файле тоже в app.config класть или есть более оптимальный вариант в случае с flask?

Google
Nikolay
27.09.2017
14:51:15
Сорри, я забыл уточнить. Ты предлагаешь то что в yaml файле тоже в app.config класть или есть более оптимальный вариант в случае с flask?
ты можешь вынести в yaml отдельно только изменяемые параметры и грузить их, как угодно

Max
27.09.2017
14:52:25
ты можешь вынести в yaml отдельно только изменяемые параметры и грузить их, как угодно
Мне нужно закешировать то что в yaml файле, чтобы каждый раз его не читать. Это писать свою обертку и вызывать ее в каждом реквесте или у фласка есть батарейка на этот случай (а я про нее не вкурсе) ?

Nikolay
27.09.2017
14:54:05
Мне нужно закешировать то что в yaml файле, чтобы каждый раз его не читать. Это писать свою обертку и вызывать ее в каждом реквесте или у фласка есть батарейка на этот случай (а я про нее не вкурсе) ?
ты куда-то не в ту степь ушел. Выше же мы обсуждали, что ты просто рестартишь приложение при изменении файла и читаешь его один раз ровно, при старте

John
27.09.2017
14:54:19
Короч, вот что нужно еще знать и уметь для настоящего программиста, помимо чисто программерских штук: 1) Дискретку 2) Линал/ангеом 3) Матан 4) Функан 5) Диффуры 6) Дифгеометрию 7) Топологию 8) Многомерные пространства 9) Уметь при этом доказывать все теоремы из вышеперечисленных дисциплин, а также уметь решать все задачи 10) Химию 11) Органическую химию 12) Общую биологию 13) Микробиологию 14) Историю России 15) Всемирную историю 16) Цитировать всех древнегреческих, римских и китайских философов на зубок 17) Историю династии Кимов 18) Фехтовать 19) Оседлать коня на полном скаку 20) Рисовать как Пикассо 21) Все языки племен Мезоамерики на уровне C1 и не ниже Если что-то из перечисленного не знаете или не умеете, значит вы не программист, а просто кодомакака клепающая бложеги, тетрисы и пр. простенькие поделки

Robert
27.09.2017
14:54:19
Здравствуйте

Andrey
27.09.2017
14:54:45
Max
27.09.2017
14:54:50
могу читать в app.config, но это разве не колхоз?

Nikolay
27.09.2017
14:54:52
читаю один раз, но куда? в этом вопрос
да хоть куда, какая разница? хоть в словарь в памяти

Robert
27.09.2017
14:54:58
Подскажите пожалуйста, почему может не происходить замена подстроки в строке?

Max
27.09.2017
14:55:22
можешь. норм
ок, спасибо

Robert
27.09.2017
14:55:22
Код: https://ideone.com/Ryqs5A

Nikolay
27.09.2017
14:56:16
Код: https://ideone.com/Ryqs5A
возьми jinja2 и больше не пиши такой наркомании

John
27.09.2017
14:57:02
слишком толсто
И я перечислил только базу для джуниора

Robert
27.09.2017
14:57:19
Jinja 2 это шаблонизатор. Про него я знаю. Меня интересует возможность изменения готового конфигурационного файла.

in favor
27.09.2017
14:57:25
ты делаешь реплейс

"oldname"

Robert
27.09.2017
14:57:46
Я не хочу при редактировании каждый раз генерировать конфиг

Страница 3838 из 9768