4

我有一个 python 脚本通过 Heroku 上的夜间作业运行。每隔一段时间(最近,更多),由于以下错误,脚本无法执行。

2015-02-25T05:00:02.671242+00:00 app[clock.1]: No handlers could be found for logger "apscheduler.executors.default"

该脚本使用我的 Procfile 中定义的内置时钟方法执行。

时钟.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()

如您所见,我做到了,但问题仍然存在。

4

2 回答 2

10
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)

我让我的工作像这样的好格式

于 2016-03-15T12:24:47.840 回答
1

我也有同样的情况;问题可能是由于您的代码中的某些异常与试图记录它们的 apscheduler 产生了一些冲突。

尝试在没有 sys 和没有记录器的情况下运行您的 Apscheduler,而只需import os;正如最近的文档中所建议的那样。

然后检查您的任务功能中是否存在有问题的错误或未捕获的异常(这很可能)并启动您的调度程序。

如果您在函数中找不到问题,请避免使用 sys,导入 os 并使用基本日志记录导入记录器。(它可能会帮助您发现问题)

希望这也适用于你。

于 2015-07-02T00:06:40.900 回答