Denis
class A:
@staticmethod
def foo()
pass
foo()
Alex
такая себе идея вызывать статический метод после создания класса
🍁 Jaŭhien
Denis
Alex
Sergey
подскажите а как остановить уже запущеный питон скрипт?
Alex
Sergey
т.е. я имею ввиду например по крону он запускается
Alex
Проксимов
Sergey
а если нет прав на это?
Alex
Sergey
понял )
Alex
sudo kill
Sergey
можно еще наверное сделать файл статуса, в который записать что скрипт должен быть выключен, а скрипт прочитав тэо выключится
Sergey
дебильная схема?
Sergey
))
🍁 Jaŭhien
TypeError: 'staticmethod' object is not callable
🍁 Jaŭhien
это типа дескриптор и там все сложно
Проксимов
🍁 Jaŭhien
методы это и есть дескрипторы
Slam!
Alex
Slam!
Метод отличается от дескриптора
🍁 Jaŭhien
да ладно, я не об этом
Alex
🍁 Jaŭhien
методы реализованы через дескрипторы, дескриптор - часть класса, пока нет класса, нет и дескриптора
🍁 Jaŭhien
ну в общем, я плохо помню апи дескрипторов
Slam!
Alex
Slam!
А дескриптор можно в метод превратить, определив __callable__
🍁 Jaŭhien
Максим
🍁 Jaŭhien
Надо доку по дескрипторам перечитать)
Slam!
Максим
Sergey
после того как я пришибаю скрипт через pkill сокет который он занимал остается висеть
Sergey
в самом скрипте не надо ничего дополнительно прописать?
Максим
Максим
и таких проблем не будет
Проксимов
Sergey
так а в чем дело то, почему так?
Slam!
Sergey
а есть возможность получить уведомление внутри скрипта, что его киляют?
Sergey
тогда можно закрыть сокет да
Alex
Sergey
пытаюсь запустить скрипт ээтот же, он говорит, что сокет уже занят с этим портом
Sergey
Alex
Alex
Alex
теперь тебе осталось узнать про TIME_WAIT и SO_REUSEADDR
Sergey
this
ну вот таким образом люди обычно и учатся, на ошибках
Alex
зы тебе в @ru_python_beginners
Sergey
я и не удивляюсь, задаю вопрос просто, что сокеты провисают все знают и без книжек ... вопрос как в конкретном случае того избежать можно
Alex
https://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.allow_reuse_address
Alex
Sergey
Alex
а вот как полученные знания применить ты уж сам как-нибудь.
Sergey
не помогает )
Alex
Sergey
спасибо, теперь лучше... но по факту ничего не изменилось
Sergey
если скрипт просто остановить, то все впорядке, проблема только если скрипт вырубить через pkill
Alex
Кстати HTTPServer по-умолчанию и так устанавливает allow_reuse_address.
Alex
Sergey
tcp4 132 0 10.0.1.102.8000 209.17.96.250.37256 CLOSE_WAIT
Sergey
Amaro
Так разве заработает?
Вот так заработает:
class Foo:
@staticmethod
def bar():
print('Oops')
Foo.bar()
НО НАФИГА?
Alex
Amaro
Amaro
Alex
эм… а ты запусти новую сессию 😉
Alex
и удивишься
Amaro
Чему удивлюсь?
Amaro
просто оно сработает в момент определения класса, и всё.
Alex
но у тебя в момент вызова Foo.bar() имя Foo еще не определено