繁体   English   中英

一段时间后Python是否超时?

[英]Does Python timeout after a certain period of time?

我在Arch Linux中运行了一个旨在永久循环的Python2脚本-但是,它在这么多小时后停止运行。

这是脚本:

import RPi.GPIO as GPIO
import time
import urllib2
import xml.dom
from urllib2 import Request, urlopen, URLError, HTTPError
from xml.dom import minidom

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(16, GPIO.OUT)
GPIO.output(15, True)
GPIO.output(16, True)

saved_store_pickup_order = False;

while True:
    req = Request('http://www.example.com/apiv2/pi/alerts/')
    try:
        response = urlopen(req)
    except HTTPError as e:
        print 'The server couldn\'t fulfill the request: ', e.code
    except URLError as e:
        print 'Failed to reach server: ', e.reason
    else:
        xml = response.read()
        xmldoc = minidom.parseString(xml)
        store_pickup = xmldoc.getElementsByTagName('current_store_pickup')
        if len(store_pickup):
            current_store_pickup_order = store_pickup[0].childNodes[0].nodeValue

            if not saved_store_pickup_order:
                saved_store_pickup_order = current_store_pickup_order

            if  current_store_pickup_order != saved_store_pickup_order:
                GPIO.output(15, False)
                GPIO.output(16, False)
                saved_store_pickup_order = current_store_pickup_order

    time.sleep(5)
    GPIO.output(16, True)
    time.sleep(25)

我想知道默认情况下执行Python脚本是否有超时时间。

同样,如果有区别的话,此脚本由systemd在启动时启动。

  1. try: except:整个循环try: except:

  2. 考虑从print语句转移到使用日志记录库。

示例(未试用):

import logging
mylog = logging.getLogger(__name__)
mylog.info('start')
while True:
    try:
       out = dostuff(data)
       mylog.debug('got {}, output={}'.format(data, out))
    except KeyboardInterrupt:
       break
    except Exception:
       mylog.exception('uhoh')
mylog.info('done')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM