Pyw脚本在一个whi之后就死了

2024-03-29 12:54:21 发布

您现在位置:Python中文网/ 问答频道 /正文

while True:
    try:
        # send some mail
        time.sleep(hours*60*60)
    except:
        time.sleep(60)

这个脚本应该每x小时发送一封电子邮件。确实如此。如果失败,它应该等一分钟再试一次。我测试了它的时间设置为0.01(36秒),它的工作,甚至当我关闭和重新打开wifi。但当我把时间设为2小时,然后等待时,什么也没发生。Python的过程消失了。你知道吗


Tags: 脚本sendtruetime过程时间mailsleep
1条回答
网友
1楼 · 发布于 2024-03-29 12:54:21

您应该将其重命名为.py,并观察控制台输出。你知道吗

或者,更好的是,设置未处理异常的日志记录(见下文)。一般来说,如果脚本要在无人值守的情况下运行,您必须使用日志记录来报告脚本的进度:没有其他方法可以让您知道它发生了什么!你知道吗

例如,当脚本开始很长时间的等待时,你可以报告它在什么时候开始等待以及等待多长时间,这将为你澄清一些事情。你知道吗

以下是我如何在脚本中设置日志,这些脚本将在后台长时间运行:

# set up logging #####################################
import sys,logging,logging.handlers,os.path
logfile = os.path.splitext(os.path.basename(sys.argv[0]))[0]+".log"
l = logging.getLogger()
l.setLevel(logging.DEBUG)
f = logging.Formatter('%(asctime)s %(process)d:%(thread)d %(name)s %(levelname)-8s %(message)s')
h=logging.StreamHandler(sys.stdout)
h.setLevel(logging.NOTSET)
h.setFormatter(f)
l.addHandler(h)
h=logging.handlers.RotatingFileHandler(logfile,maxBytes=1024**2,backupCount=1)
h.setLevel(logging.NOTSET)
h.setFormatter(f)
l.addHandler(h)
del h,f
#hook to log unhandled exceptions
def excepthook(type,value,traceback):
    logging.error("Unhandled exception occured",exc_info=(type,value,traceback))
    #Don't need another copy of traceback on stderr
    if old_excepthook!=sys.__excepthook__:
        old_excepthook(type,value,traceback)
old_excepthook = sys.excepthook
sys.excepthook = excepthook
del excepthook,logfile
# ####################################################

相关问题 更多 >