
b0g3r
19.04.2017
21:20:10
логгинг штука прекрасная :)

V
19.04.2017
21:20:20
+

b0g3r
19.04.2017
21:20:35
это бы и решило проблему со сторонним модулем
там тоже наверняка логгинг :)

Google

V
19.04.2017
21:20:59
главное что потом можно просто в конфиге что-то поменять, не выискивая по коду где там принт какой куда
про сторонний модуль чот пропустил

Sergey❄️
19.04.2017
21:22:04
А логгинг может в разные файлы сохранять?
не обязательно одновременно

V
19.04.2017
21:22:27
разные в зависимости от чего?

b0g3r
19.04.2017
21:22:52
может

Sergey❄️
19.04.2017
21:22:52

V
19.04.2017
21:22:55
сделай сколько нужно объектов логгера и дай им нужные хендлеры
еще очень прикольно кастомные форматтеры делать

Sergey❄️
19.04.2017
21:23:49

b0g3r
19.04.2017
21:24:04
ну вот ты посмотри на модуль для начала)

V
19.04.2017
21:24:04
кури доку и примеры по логгингу, там все доходчиво

b0g3r
19.04.2017
21:24:08
а потом задавай конкретные вопросы)

Google

Sergey❄️
19.04.2017
21:24:36

V
19.04.2017
21:24:40
думаю, если примеры посмотришь вопросов не возникнет

Sergey❄️
19.04.2017
21:24:43
там куча абзацев про форматирование
а не про разные инстансы логгера

b0g3r
19.04.2017
21:25:28
ну так разные инстансы логера
это first_loger = logging.getLogger('first')
и точно также с second
и используй их потом
кстати а что за херня с логгингом
почему он не по пепу?
Log4j
нашел

V
19.04.2017
21:28:30

тнн Itjunky
19.04.2017
22:06:06
Доброй ночи всем.
Столкнулся с задачкой уведомлять поп рошествии суток с момента события. Причём не только одних суток, но и двух и трёх...
Думаю, что надо по крону раз в минуту запускать этот чекер. Но не совсем понятно как прислать именно одно уведомление, а не два, например. И как проверять, что прошли вторые и тртьи сутки...
Понятно, что там надо таймдельту юзать
Но не ясно деталей
# check date of last deposit
record = session.query(User).\
filter(User.id == message.chat.id).all()[0]
# what days ago
ago = datetime.now() - record.deposit_date
if ago.days < 15:
Так чекаю, что 15 дней не прошло. Но как чекать, что прошло больше 1 суток, типа вторые, третьи и тд?

Alex
19.04.2017
22:09:55
Без нормального ТЗ результат ХЗ

Stanislav
19.04.2017
22:10:05

Google

тнн Itjunky
19.04.2017
22:10:28

Alex
19.04.2017
22:10:30

тнн Itjunky
19.04.2017
22:10:33
От неё я и чекаю

Stanislav
19.04.2017
22:10:56
Это называется обычный не велосипедный таймер

тнн Itjunky
19.04.2017
22:11:07
Таймер не нужен

Stanislav
19.04.2017
22:11:37

Alex
19.04.2017
22:11:45
Задачу правильно сформулируй. Я не понял

Stanislav
19.04.2017
22:11:46
С момента события

тнн Itjunky
19.04.2017
22:11:56

Stanislav
19.04.2017
22:12:09
Дальше

тнн Itjunky
19.04.2017
22:12:18
Как, зная дату события, проверять, что прошли одни, двое, трое стуок с её момента?

Stanislav
19.04.2017
22:12:57
Вешаешь такой таймер через асинкио на любой инвент

тнн Itjunky
19.04.2017
22:13:15
Демоны не нужны

Alex
19.04.2017
22:13:24
if ago.days < 15:
elif ago.days > 16:
Проблемы?

тнн Itjunky
19.04.2017
22:13:39

Google

Stanislav
19.04.2017
22:13:44

Alex
19.04.2017
22:15:15
У тебя же БД. Сразу делай выборку с прошедшими датами между

тнн Itjunky
19.04.2017
22:15:45
Что есть 15 раз?
Мне каждые сутки на протяжении 15 дней надо присылать уведомление о том, что прошли очередные сутки с момента события
Причём в час и минуту, когда произошло событие

Alex
19.04.2017
22:17:53
Ну и? Выборка будет filter(and_(days >= startdate, days<=stopdays))

Alex
19.04.2017
22:18:13

тнн Itjunky
19.04.2017
22:18:27
А надо только один раз в сутки

Alex
19.04.2017
22:19:39

тнн Itjunky
19.04.2017
22:20:51

Alex
19.04.2017
22:21:32
а еще логичнее писать в отдельную таблицу время всех уведомлений

тнн Itjunky
19.04.2017
22:25:43
Ну уже интересно
Тогда всегда чекаем только сутки с последнего

Alex
19.04.2017
22:33:22
filter(
and_(
ago.days>=startday,
ago.days<=stopday
)
).filter(
(datetime.now() - ago.days) % timedelta(days=1)<=timedelta(minutes=1)
)

тнн Itjunky
19.04.2017
22:34:52
Так, с эндом это рамки всего диапазона, тут понятно.
А вот с фильтром не понятно.
Типа делится ли целочисленно текущая дата минус прошедшие дни?
На сутки с минутой
Верно интерпретировал?

Google

Alex
19.04.2017
22:37:19
ХЗ. Может быть.

тнн Itjunky
19.04.2017
22:37:36
Сам не понял, что написал? =))))

Alex
19.04.2017
22:38:06
Я-то понял. А вот как ты интерпретировал, я хз.

тнн Itjunky
19.04.2017
22:38:19
Ну своими словами опиши тогда

Alex
19.04.2017
22:38:54
Зачем? Запусти код и увидишь.

тнн Itjunky
19.04.2017
22:39:17
блин
Я ж понимать хочу, а не копипастить тупо

Alex
19.04.2017
22:40:18
https://docs.python.org/3/library/datetime.html
Там же примеры.
А для понимания рисуют блок схемы.
Слышал про такие?
Я, к примеру, использую yEd для рисования блок схем трудных задач.

тнн Itjunky
19.04.2017
22:42:50
Конечно слышал, но юзал это только в техникуме, ибо обычно задачи довольно простые в жизни
Ах да, видел блоксхемы бизнесс-процессов в IBM WebSphere, когда админил их в конторе. но там адец ваще

Alex
19.04.2017
22:44:01
А вообще такие задачи лучше решать с помощью celery periodic task
Но там возникают дополнительные слои абстракции
Что усложняет понимание структуры приложения

тнн Itjunky
19.04.2017
22:46:18
Дану, уверен, что тут всё просто решается. Без всяких дополнительных фрэймворков и модулей

Alex
19.04.2017
22:46:51
Ну конечно просто )))

тнн Itjunky
19.04.2017
22:47:14
Вариант со столбцом с последним уведомлением ваще простой и прикольный, но твой вариант может сработать и без дополнительной таблицы, но я его не понял до конца

Alex
19.04.2017
22:47:46
Ты уже обкатал мой вариант?
Эта группа больше не существует