我有一个python脚本通过Heroku的夜间工作运行。每隔一段时间(最近,更多),脚本由于以下错误而无法执行。
2015-02-25T05:00:02.671242+00:00 app[clock.1]: No handlers could be found for logger "apscheduler.executors.default"
脚本使用我的Procfile中定义的内置时钟方法执行。
clock.py:
import sys
import logging
sys.path.append('main')
from main import main
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
# Executes every night at 5:00am UTC time | 12:00am (midnight) Winston-Salem, NC time
@sched.scheduled_job('cron', hour=5)
def scheduled_job():
logging.basicConfig()
main()
sched.start()
我在网上搜索过,根据我读过的一些回复,人们说这是一个警告,而不是一个错误。但是,此问题会导致整个脚本在发生时失败。我的问题是,是否有解决方法?其次,为什么有时会发生这种情况而不是总是?
很多人说只需在脚本中添加以下内容:
import logging
logging.basicConfig()
正如你所看到的,我做了,但问题仍然存在。
答案 0 :(得分:8)
import logging
log = logging.getLogger('apscheduler.executors.default')
log.setLevel(logging.INFO) # DEBUG
fmt = logging.Formatter('%(levelname)s:%(name)s:%(message)s')
h = logging.StreamHandler()
h.setFormatter(fmt)
log.addHandler(h)
我得到了一个像这样的好格式
答案 1 :(得分:1)
我有同样的情况;问题可能是由于您的代码中的某些异常与尝试记录它们的apscheduler产生了一些冲突。
尝试在没有sys且没有记录器的情况下运行你的Apscheduler,而只是 import os ;正如最近的文件中所建议的那样。
然后查看任务函数中没有问题的错误或未捕获的异常(这可能是可能的)并启动您的调度程序。
如果你在函数中找不到问题,那么请避免sys,import os和import logger with basic logging。(它可以帮助你发现你的问题)
希望这也适合你。