Python: выполнять действия повторно в течение определенного промежутка времени, если условие выполняется - PullRequest
0 голосов
/ 01 декабря 2010

Итак, я пытаюсь сделать это (получить доступ к файлу на веб-сайте, прочитать его содержимое и выполнить действия до тех пор, пока содержимое не сообщит о выходе. Предварительным условием является то, что он должен ждать x секунд, прежде чем снова получить доступ к сайту; содержание):

perform = True
while(perform):
 data = urllib.urlopen('someurl')
 data = data.read()
 if(data == '0'):
  dosomething()
 elif(data == '1'):
  #1 signifies to exit the loop
  perform = False
 else:
  time.sleep(10)

Однако, похоже, это никогда не работает. «Someurl» всегда имеет значение. Некоторые Google говорят, что это как-то связано с функцией сна. Пожалуйста, помогите!

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

это:

import time
while True:
    print "fetching"
    time.sleep(10)

- это минимальный тестовый пример, и поскольку он всегда работает, с time.sleep функцией

проблем быть не может
1 голос
/ 01 декабря 2010

1) Вы пытались на самом деле проверить, что data вы получаете от чтения URL? Мол, распечатывать что ли?

2) Если данные действительно совпадают с '0' или '1', то вы не попадете в случай else, поэтому sleep() не произойдет. Это плохо, потому что это означает, что вы пытаетесь сразу же прочитать данные снова. Вероятно, это не изменится, и веб-серверам вы обычно не очень нравитесь, когда вы просите у них один и тот же URL снова и снова без остановки (они думают, что вы пытаетесь их взломать). Решение: не помещайте вызов sleep() в случае else; просто оставьте его на том же уровне, что и оригинал if. Вам не нужно else, чтобы иметь действительный код.

...