Я строю скрипт python, чтобы проверить цену элемента amazon каждые 5-10 секунд. Проблема в том, что скрипт перестает «работать» через несколько минут. В консоли нет выхода, но в моих процессах он отображается как «работает».Скрипт Python останавливается через несколько минут
Я использую сеансы запросов для создания http-запросов и времени для отображения времени запроса.
Мой код выглядит следующим образом;
target_price = raw_input('Enter target price: ')
url = raw_input('Enter the product url: ')
while True:
delay=randint(5,10)
print datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')+': '+'Sleeping for ' + str(delay) + ' seconds'
time.sleep(delay)
try:
with requests.Session() as s:
page = s.get(url,headers=headers,proxies=proxyDict,verify=False,timeout=5)
tree = html.fromstring(page.content)
price = tree.xpath('//div[@class="a-row a-spacing-mini olpOffer"]/div[@class="a-column a-span2 olpPriceColumn"]/span[@class="a-size-large a-color-price olpOfferPrice a-text-bold"]/text()')[0]
new_price = re.findall("[-+]?\d+[\.]?\d+[eE]?[-+]?\d*", price)[0]
old_price = new_price
print new_price
if float(new_price)<float(target_price):
print 'Lower price found!'
mydriver = webdriver.Chrome()
send_simple_message()
login(mydriver)
print 'Old Price: ' + old_price
print 'New Price: ' + new_price
else:
print 'Trying again'
except Exception as e:
print e
print 'Error!'
EDIT: Я удалил функцию wait() и вместо этого использовал time.sleep.
EDIT2: Когда я использую прерывание клавиатуры, чтобы остановить сценарий, вот выход
Traceback (most recent call last):
File "checker.py", line 85, in <module>
page = s.get(url,headers=headers,proxies=proxyDict,verify=False,timeout=5)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 488, in get
return self.request('GET', url, **kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 596, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests\adapters.py", line 423, in send
timeout=timeout
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 589, in urlopen
self._prepare_proxy(conn)
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 797, in _prepare_proxy
conn.connect()
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connection.py",
line 267, in connect
self._tunnel()
File "C:\Python27\lib\httplib.py", line 729, in _tunnel
line = response.fp.readline()
KeyboardInterrupt
Это просит работает в бесконечный цикл?
Что такое активный цикл? Как я могу это изменить? Первоначально я использовал time.sleep(), но изменил его на пользовательскую функцию, так как я думал, что time.sleep() может заставить программу перестать работать. –
@ShikharGupta Active loop означает цикл, который не делает ничего похожего на цикл while, который у вас есть с 'pass'. – afsafzal
Знаете ли вы, на какой строке вашего кода он застрял? Какой последний печатный результат вы видите? – afsafzal