2024-03-29 12:54:21 发布
网友
while True: try: # send some mail time.sleep(hours*60*60) except: time.sleep(60)
这个脚本应该每x小时发送一封电子邮件。确实如此。如果失败,它应该等一分钟再试一次。我测试了它的时间设置为0.01(36秒),它的工作,甚至当我关闭和重新打开wifi。但当我把时间设为2小时,然后等待时,什么也没发生。Python的过程消失了。你知道吗
您应该将其重命名为.py,并观察控制台输出。你知道吗
.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 # ####################################################
您应该将其重命名为
.py
,并观察控制台输出。你知道吗或者,更好的是,设置未处理异常的日志记录(见下文)。一般来说,如果脚本要在无人值守的情况下运行,您必须使用日志记录来报告脚本的进度:没有其他方法可以让您知道它发生了什么!你知道吗
例如,当脚本开始很长时间的等待时,你可以报告它在什么时候开始等待以及等待多长时间,这将为你澄清一些事情。你知道吗
以下是我如何在脚本中设置日志,这些脚本将在后台长时间运行:
相关问题 更多 >
编程相关推荐