@python_beginnersЭта группа больше не существует

Страница 1659 из 1885
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
сделай сколько нужно объектов логгера и дай им нужные хендлеры

еще очень прикольно кастомные форматтеры делать

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

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

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

Google
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
а не про разные инстансы логгера
тебе нужно только про FileHandler, а уж инстансы наклепать дело не хитрое

тнн 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
Без нормального ТЗ результат ХЗ

Google
тнн Itjunky
19.04.2017
22:10:28
Alex
19.04.2017
22:10:30
from time import sleep days = 0 while True: sleep(86400) days += 1 nohup python timer.py &
Вооот это костылище так костылище!!!

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

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

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

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

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

тнн Itjunky
19.04.2017
22:11:56
>по прошествию суток
Дата в базе. Её анализирую для каждого юзера раз в минуту

тнн 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
if ago.days < 15: elif ago.days > 16:
И так 15 раз? =))))

Google
Stanislav
19.04.2017
22:13:44
фпизду это идиотское решение
Окей, ебись с костылями дальше

Alex
19.04.2017
22:15:15
И так 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
Мне каждые сутки на протяжении 15 дней надо присылать уведомление о том, что прошли очередные сутки с момента события
можно с вот этим сделать костыль https://pypi.python.org/pypi/schedule главное грамотно это использовать

тнн Itjunky
19.04.2017
22:18:27
Ну и? Выборка будет filter(and_(days >= startdate, days<=stopdays))
Ну и каждую минуту все 15 дней будет срабатывать этот иф

А надо только один раз в сутки

Alex
19.04.2017
22:19:39
А надо только один раз в сутки
так считать время, которое прошло с момента прошлого уведомления

тнн Itjunky
19.04.2017
22:20:51
так считать время, которое прошло с момента прошлого уведомления
Я думал, да, что можно сделать ещё одну колонку в БД и туда сохранять, что за эти сутки уже было уведмоление, но надеялся, что есть изящнее решение через таймдельту что бы точно определить, что прошли ровно сутки, потом ровно двое и тд

тнн 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
Ты уже обкатал мой вариант?

Страница 1659 из 1885

Эта группа больше не существует Эта группа больше не существует