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
Ты уже обкатал мой вариант?
Эта группа больше не существует