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