Size: a a a

Сообщество Python Программистов

2020 December 19

$

$name$ in Сообщество Python Программистов
И названия некрасивые получаются (сверху то, что было до изменения)
источник

VA

Vadim Apenko in Сообщество Python Программистов
$name$
Хз даже, что лучше было)
Если чо, данный хендлер должен просто все файлы кидать на телеграф и давать ссылку. Я потом буду использовать aiogram/telegraph, но пока хочу сам реализовать
всё не нравится
источник

$

$name$ in Сообщество Python Программистов
Vadim Apenko
всё не нравится
1 или 2?)
источник

VA

Vadim Apenko in Сообщество Python Программистов
$name$
1 или 2?)
оба. Ну в смысле оно норм, но можно лучше.
например сразу возникают вопросы:
Что будет если телеграф не доступен? Надо ли рассказать про это пользователю?
Почему используетсся какая-то левая папка, когда файл после загрузки уже не нужен и можно заюзать tempfile?
Почему жёсткая привязка к png?
источник

$

$name$ in Сообщество Python Программистов
Vadim Apenko
оба. Ну в смысле оно норм, но можно лучше.
например сразу возникают вопросы:
Что будет если телеграф не доступен? Надо ли рассказать про это пользователю?
Почему используетсся какая-то левая папка, когда файл после загрузки уже не нужен и можно заюзать tempfile?
Почему жёсткая привязка к png?
Хорошие замечания. (особенно последние 2), но особо запариваться с этим я не хочу, ибо я буду всё ровно использовать то, что намутил алекс
источник

VA

Vadim Apenko in Сообщество Python Программистов
$name$
Хорошие замечания. (особенно последние 2), но особо запариваться с этим я не хочу, ибо я буду всё ровно использовать то, что намутил алекс
Кстати не важно что ты используешь для загрузки файлов. Вопросы всё равно актуальны, ибо они к архитектуре больше.
источник

$

$name$ in Сообщество Python Программистов
Vadim Apenko
Кстати не важно что ты используешь для загрузки файлов. Вопросы всё равно актуальны, ибо они к архитектуре больше.
ну да, поправлю)0
источник

$

$name$ in Сообщество Python Программистов
Можно даже бота написать, чтобы когда админы забирают права на медиа, можно было этасамаеда))0
источник

VA

Vadim Apenko in Сообщество Python Программистов
Сейчас сам голову ломаю над одним ботом
источник

VA

Vadim Apenko in Сообщество Python Программистов
Точнее над логикой работы
источник

$

$name$ in Сообщество Python Программистов
Vadim Apenko
Точнее над логикой работы
Крута))0
источник

$

$name$ in Сообщество Python Программистов
Что там за бот? Может я могу чем-то помочь?
Хотя если проблемы с логикой — вряд ли))
источник

AM

Aleksei Morozov in Сообщество Python Программистов
Господа, приветствую всех
Подскажите, пожалуйста, как работает в питоне сборщик мусора? Почему метод __del__ выполняется в неожиданный момент?
Вот пример:

class A:
   i = 0
   
   def __init__(self):
       self.i = self.__class__.i
       self.__class__.i += 1
       print("init ", self)
   
   def __del__(self):
       self.__class__.i -= 1
       print("del ", self)
       
   @property
   def n(self):
       return self.__class__.i
   
   def __repr__(self):
       return f"<A(i={self.i}, n={self.n})>"
   
def main():
   a_list = [A() for _ in range(5)]
   
   for a in a_list:
       del a
       
   print("i\"m here", a_list)
   print(a_list[0])


if __name__ == "__main__":
   main()


Результат следующий:
init  <A(i=0, n=1)>
init  <A(i=1, n=2)>
init  <A(i=2, n=3)>
init  <A(i=3, n=4)>
init  <A(i=4, n=5)>
i"m here [<A(i=0, n=5)>, <A(i=1, n=5)>, <A(i=2, n=5)>, <A(i=3, n=5)>, <A(i=4, n=5)>]
<A(i=0, n=5)>
del  <A(i=4, n=4)>
del  <A(i=3, n=3)>
del  <A(i=2, n=2)>
del  <A(i=1, n=1)>
del  <A(i=0, n=0)>
источник

КБ

Кирилл Баст... in Сообщество Python Программистов
Aleksei Morozov
Господа, приветствую всех
Подскажите, пожалуйста, как работает в питоне сборщик мусора? Почему метод __del__ выполняется в неожиданный момент?
Вот пример:

class A:
   i = 0
   
   def __init__(self):
       self.i = self.__class__.i
       self.__class__.i += 1
       print("init ", self)
   
   def __del__(self):
       self.__class__.i -= 1
       print("del ", self)
       
   @property
   def n(self):
       return self.__class__.i
   
   def __repr__(self):
       return f"<A(i={self.i}, n={self.n})>"
   
def main():
   a_list = [A() for _ in range(5)]
   
   for a in a_list:
       del a
       
   print("i\"m here", a_list)
   print(a_list[0])


if __name__ == "__main__":
   main()


Результат следующий:
init  <A(i=0, n=1)>
init  <A(i=1, n=2)>
init  <A(i=2, n=3)>
init  <A(i=3, n=4)>
init  <A(i=4, n=5)>
i"m here [<A(i=0, n=5)>, <A(i=1, n=5)>, <A(i=2, n=5)>, <A(i=3, n=5)>, <A(i=4, n=5)>]
<A(i=0, n=5)>
del  <A(i=4, n=4)>
del  <A(i=3, n=3)>
del  <A(i=2, n=2)>
del  <A(i=1, n=1)>
del  <A(i=0, n=0)>
Код на pastebin
источник

$

$name$ in Сообщество Python Программистов
Кирилл Баст
Код на pastebin
или dpaste.de
источник

AM

Aleksei Morozov in Сообщество Python Программистов
источник

VA

Vadim Apenko in Сообщество Python Программистов
$name$
Что там за бот? Может я могу чем-то помочь?
Хотя если проблемы с логикой — вряд ли))
На работе есть такой комплекс, который зовётся Jenkins. Это система непрерывной интеграции. Мы в нём запускаем нажатием кнопки процессы билда и\или деплоя. Процессы там относительно долгие и держать открытой вкладку браузера чтоб следать когда оно закончилось или упало - влом. А когда одновременно запускает 2-3-5 процессов - то вообще тратишь время только на то, чтоб за этим следить.

Потому я около месяца назад написал бота, которому кормишь название задачи, он ищет запущенные билды по ней и за ними следит, сообщая когда падает или исполняется успещно.

Вот поюзали мы его месяц и подумали, а зачем вообще кормить ему название задач, ведь можно просто из API Дженкинса вытаскивать всё то, что запустил конкретный юзер и ему сообщать статус.

И вот проблема, API делал какой-то аутист и оно весьма ограничено.

Например:
Получить все запущенные билды от конкретного юзера - нельзя.
Получить все запущенные билды вообще - нельзя.
Можно получить все билды по конкретной задаче и запросить инфу по каждому из билдов, посмотрев там юзера, которым оно было запущено. (но это долго для регулярного поллинга, а в нём и смысл)
Коллбеков у дженкинса нет.
Есть задачи, которые комбинируют в себя с десяток других задач, и если я сделаю саму простую логику, то запустив одно родительскую задачу, бот будет спамить всем, что дочернее. Отделить мух от котлет я не понимаю как.
источник

AM

Aleksei Morozov in Сообщество Python Программистов
Принты прописаны после цикла с удалением, но выполняется всё наоборот: сначала отрабатывают принты, а потом цикл с удалением
источник

$

$name$ in Сообщество Python Программистов
Vadim Apenko
На работе есть такой комплекс, который зовётся Jenkins. Это система непрерывной интеграции. Мы в нём запускаем нажатием кнопки процессы билда и\или деплоя. Процессы там относительно долгие и держать открытой вкладку браузера чтоб следать когда оно закончилось или упало - влом. А когда одновременно запускает 2-3-5 процессов - то вообще тратишь время только на то, чтоб за этим следить.

Потому я около месяца назад написал бота, которому кормишь название задачи, он ищет запущенные билды по ней и за ними следит, сообщая когда падает или исполняется успещно.

Вот поюзали мы его месяц и подумали, а зачем вообще кормить ему название задач, ведь можно просто из API Дженкинса вытаскивать всё то, что запустил конкретный юзер и ему сообщать статус.

И вот проблема, API делал какой-то аутист и оно весьма ограничено.

Например:
Получить все запущенные билды от конкретного юзера - нельзя.
Получить все запущенные билды вообще - нельзя.
Можно получить все билды по конкретной задаче и запросить инфу по каждому из билдов, посмотрев там юзера, которым оно было запущено. (но это долго для регулярного поллинга, а в нём и смысл)
Коллбеков у дженкинса нет.
Есть задачи, которые комбинируют в себя с десяток других задач, и если я сделаю саму простую логику, то запустив одно родительскую задачу, бот будет спамить всем, что дочернее. Отделить мух от котлет я не понимаю как.
да уж))
Земля пухом)00)
источник

$

$name$ in Сообщество Python Программистов
Я, кстати, недавно на неприятный баг телеграм апи напаролся. Хотя его можно юзать как "фишку", но думаю его пофиксят в скором времени
источник