我正在使用Python APScheduler运行一堆重复性任务,但是对于几个任务,我现在遇到错误,例如:
警告:apscheduler.scheduler:执行作业“getAndStoreExchangeRate(触发器:cron [minute='*'],下次运行时间:2014-11-06 18:48:00 CET)”已跳过:已达到最大运行实例数(1 )
除此之外,这个 APscheduler 实例的内存使用量在运行大约十天后突然上升,从大约 47MiB 到 1200MiB,之后由于机器内存不足,各种进程停止。
因此,要找到问题的根源,我需要准确了解哪些调用会导致这些警告。据我了解,发生此错误是因为上一个呼叫(此呼叫前一分钟)尚未结束。但是,此错误中的信息相当模糊。函数的名称是 ( getAndStoreExchangeRate
),但我有多个文件,其中的函数名称如下。所以我想知道的是:
- 这个函数在哪个文件的哪一行出现警告?
- 这个函数有哪些参数?
有人知道我如何在某处记录这些信息吗?欢迎所有提示!
[编辑]
因此,我将 BackgroundScheduler 子类化并覆盖了_process_jobs()
我在此代码段中更改 self._logger.warning 的方法:
try:
executor.submit_job(job, run_times)
except MaxInstancesReachedError:
self._logger.warning(
'Execution of job "%s" skipped: maximum number of running instances reached (%d)',
job, job.max_instances
)
except:
self._logger.exception('Error submitting job "%s" to executor "%s"', job, job.executor)
对此:
'Execution of job "%s" skipped: maximum number of running instances reached (%d) =-= ARGS: ' + str(job.args) + ' - KWARGS: ' + str(job.kwargs),
这样做的原因是它向我显示了给函数的参数,但我仍然不知道最重要的事情:在哪个文件中以及在哪一行上定义了发生警告的这个函数。有谁知道我怎么能证明这一点?