Что такое Python-эквивалент PHP set_time_limit ()? - PullRequest
0 голосов
/ 08 января 2010

У меня есть скрипт на python, который зависает (я думаю, что он останавливается в ожидании данных сокета), но у меня возникают проблемы с получением обратной трассировки, потому что единственный способ остановить это - завершить процесс. Время ожидания истекло розетка тоже, но она не работает.

Я надеюсь, что в Python есть такая функция, как set_time_limit () PHP, которая может остановить сценарий и дать мне полезную обратную трассировку, возможно, показывая остановленный вызов sock.recv() или бесконечный цикл где-то.

Ответы [ 2 ]

3 голосов
/ 08 января 2010

signal.alarm может помочь (на платформах Unix), но (в зависимости от платформы) могут быть беспрерывные системные вызовы (и если я правильно понял документы, в Unix PHP set_time_limit не учитывается время, затрачиваемое на системные вызовы, поэтому системный вызов зависает и там).

1 голос
/ 08 января 2010

Вместо этого вы можете установить таймаут для своих сокетов.

import socket
socket.setdefaulttimeout(10) #10 seconds

Сделайте это в начале вашей программы, и все, что делает сокет-соединение, должны это учитывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...