
?? Eugene
30.05.2019
19:47:14
ну в общем, я плохо помню апи дескрипторов

Slam! 538
30.05.2019
19:50:06

Alex
30.05.2019
19:50:53

Slam! 538
30.05.2019
19:50:55
А дескриптор можно в метод превратить, определив __callable__

Google

?? Eugene
30.05.2019
19:51:11

Максим
30.05.2019
19:52:29

?? Eugene
30.05.2019
19:52:34
Надо доку по дескрипторам перечитать)

Slam! 538
30.05.2019
19:52:40

Максим
30.05.2019
19:52:46

Sergey
30.05.2019
19:53:11
после того как я пришибаю скрипт через pkill сокет который он занимал остается висеть
в самом скрипте не надо ничего дополнительно прописать?

Максим
30.05.2019
19:53:33
и таких проблем не будет

Проксимов
30.05.2019
19:54:23

Sergey
30.05.2019
19:54:48
так а в чем дело то, почему так?

Slam! 538
30.05.2019
19:55:35

Sergey
30.05.2019
19:56:05
а есть возможность получить уведомление внутри скрипта, что его киляют?

Google

Sergey
30.05.2019
19:56:12
тогда можно закрыть сокет да

Alex
30.05.2019
19:57:01

Sergey
30.05.2019
19:57:40
пытаюсь запустить скрипт ээтот же, он говорит, что сокет уже занят с этим портом

Alex
30.05.2019
19:57:46

Sergey
30.05.2019
19:58:05

Alex
30.05.2019
19:58:09
теперь тебе осталось узнать про TIME_WAIT и SO_REUSEADDR

Sergey
30.05.2019
19:58:43
this
ну вот таким образом люди обычно и учатся, на ошибках

Alex
30.05.2019
19:59:27
зы тебе в @ru_python_beginners

Sergey
30.05.2019
20:00:10
я и не удивляюсь, задаю вопрос просто, что сокеты провисают все знают и без книжек ... вопрос как в конкретном случае того избежать можно

Alex
30.05.2019
20:01:55
https://docs.python.org/3/library/socketserver.html#socketserver.BaseServer.allow_reuse_address

Sergey
30.05.2019
20:02:54

Alex
30.05.2019
20:03:21

Sergey
30.05.2019
20:03:37

Alex
30.05.2019
20:04:00
а вот как полученные знания применить ты уж сам как-нибудь.

Sergey
30.05.2019
20:05:16
не помогает )

Alex
30.05.2019
20:06:21

Sergey
30.05.2019
20:07:12
спасибо, теперь лучше... но по факту ничего не изменилось

Google

Sergey
30.05.2019
20:09:12
если скрипт просто остановить, то все впорядке, проблема только если скрипт вырубить через pkill

Alex
30.05.2019
20:09:47
Кстати HTTPServer по-умолчанию и так устанавливает allow_reuse_address.

Sergey
30.05.2019
20:14:34
tcp4 132 0 10.0.1.102.8000 209.17.96.250.37256 CLOSE_WAIT

Amaro
30.05.2019
20:16:52
Так разве заработает?
Вот так заработает:
class Foo:
@staticmethod
def bar():
print('Oops')
Foo.bar()
НО НАФИГА?

Alex
30.05.2019
20:17:15

Amaro
30.05.2019
20:17:28

Alex
30.05.2019
20:19:38
эм… а ты запусти новую сессию ?
и удивишься

Amaro
30.05.2019
20:20:07
Чему удивлюсь?

Amaro
30.05.2019
20:20:27
просто оно сработает в момент определения класса, и всё.

Alex
30.05.2019
20:20:50
но у тебя в момент вызова Foo.bar() имя Foo еще не определено

Amaro
30.05.2019
20:21:12

polunin.ai???
30.05.2019
20:21:17
Определено же...
Language:
py3
Source:
class Foo:
@staticmethod
def bar():
print('Oops')
Foo.bar()
Errors:
Traceback (most recent call last):
File "source_file.py", line 1, in <module>
class Foo:
File "source_file.py", line 5, in Foo
Foo.bar()
NameError: name 'Foo' is not defined
А, нет
Не работает

Alex
30.05.2019
20:21:43

Google

Amaro
30.05.2019
20:24:00

?? Eugene
30.05.2019
20:25:36
class Foo:
print("foooo")

Alex
30.05.2019
20:26:31
посмотри какой процесс его держит
lsof -nP -i4TCP:8000

Sergey
30.05.2019
20:27:39
MacBook-Pro:~ alien$ lsof -nP -i4TCP:8000
lsof: WARNING: can't stat() smbfs file system /Volumes/com.apple.TimeMachine.Бэкапы-903E25B7-496D-4E1A-A8AA-89F7CBE6D1EF
Output information may be incomplete.
assuming "dev=3400007c" from mount table
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dns-sd 85225 alien 3u IPv4 0xc7a792407983006f 0t0 TCP *:8000 (LISTEN)
bonjour сервис

Alex
30.05.2019
20:33:33
воу, так а как ты собрался запускать свой http сервер на 8000 порту если его у тебя уже слушает dns-sd?

Sergey
30.05.2019
20:34:45
это как раз он и есть
короче если скрипт запущен нормально из терминала, то киляется он тоже нормально

Admin
ERROR: S client not available

Sergey
30.05.2019
20:35:28
проблема только в скрипте запущенном из NStask... из приложения
осталось найти в чем конкретно причина

Alex
30.05.2019
20:37:07

Sergey
30.05.2019
20:37:56
схема достаточно простая, скрипт запускается из приложения с эмуляцией командной строки
вот если он так запускается, то pkill его прибивает не до конца, т.е. сам скрипт перестает работать это 100% а вот сокеты провисают

Alex
30.05.2019
20:38:42
на каком порту слушает? при чем тут dns-sd?

Sergey
30.05.2019
20:38:59
скрипт перестает работать, потому что пока он работает, он пишет каждую секунду свое состояние, т.е. это я проверить могу
он слушает на тех портах что я задаю 8000 в том числе был ))
а dns-sd стартует дл того что бы сервер был виден через bonjour
theArguments = 'dns-sd -R \'%s\' \'%s\' \'%s\' %s' % (name, '_http._tcp', '.', port)

Google

Sergey
30.05.2019
20:40:20
))

Amaro
30.05.2019
20:42:20

Sergey
30.05.2019
20:42:38
по идее должны )
у меня есть два скрипта ))
один рабочий, второй я ковырял
первый работает нормально и гасится тоже
второй нет ))
значит я что то упустил
вот этот скрипт рабочий, запустакется и выключается нормально

Alex
30.05.2019
20:45:33
хрень какая. при чем тут подвисающие сокеты если у тебя dns-sd слушает тот же порт на котором ты пытаешься запускать свой http сервер

mr
30.05.2019
20:47:26
у меня есть в json строка вот такого вида:
"name": "Школа мотокросса и эндуро "AURORA"",
JSONDecodeError ругается на это! как мне экранировать нужные кавычки replace не покатит так как он все кавычки поменяет

Sergey
30.05.2019
20:48:00

Amaro
30.05.2019
20:48:08
Это какой-то неправильный JSON

Sergey
30.05.2019
20:48:12
я нашел причину почти )

mr
30.05.2019
20:48:13
регуляркой делать или есть что лучше ?

polunin.ai???
30.05.2019
21:00:17
Там строк 20-30 будет

Tishka17
30.05.2019
21:14:16