ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 如何为apscheduler指定’logger’

2019-09-01 17:56:23  阅读:399  来源: 互联网

标签:python scheduled-tasks scheduling


我正在尝试学习如何使用Python的apscheduler包,但是它会定期抛出以下错误:

No handlers could be found for logger "apscheduler.scheduler"

此消息似乎与计划作业中的错误相关联,例如,使用jobTester作为计划作业,以下代码在jobTester中使用未定义变量(nameStr0)给出以上错误消息:

from apscheduler.scheduler import Scheduler
from apscheduler.jobstores.shelve_store import ShelveJobStore
from datetime import datetime, timedelta
from schedJob import toyJob

def jobTester(nameStr):
    outFileName = nameStr0 + '.txt'
    outFile = open(outFileName,'w')
    outFile.write(nameStr)
    outFile.close()

def schedTester(jobList):
    scheduler = Scheduler()
    scheduler.add_jobstore(ShelveJobStore('example.db'),'shelve')
    refTime = datetime.now()

    for index, currJob in enumerate(jobList):
        runTime = refTime + timedelta(seconds = 15)
        jobName = currJob.name + '_' + str(index)
        scheduler.add_date_job(jobTester, runTime, name = jobName,
                           jobstore = 'shelve', args = [jobName])


    scheduler.start()
    stopTime = datetime.now() + timedelta(seconds = 45)
    print "Starting wait loop .....",
    while stopTime > datetime.now():
        pass
    print "Done"

def doit():
    names = ['Alan','Barbara','Charlie','Dana']
    jobList = [toyJob(n) for n in names]
    schedTester(jobList)

通过运行此代码(存储在文件schedTester.py中)可以看到这一点,如下所示:

>>> import schedTester
>>> schedTester.doit()
No handlers could be found for logger "apscheduler.scheduler"
Starting wait loop ..... Done

但是,当我用nameStr替换nameStr0(即变量名称的正确拼写)时,代码运行正常,没有错误消息.

>如何为apscheduler.scheduler创建记录器?我是否遗漏了有关配置调度程序的文档部分
>我认为这个记录器是某种类型的stderr我是否正确?如果是这样,我将在哪里寻找它(如果不是由我设置的方式决定)

解决方法:

你可以创建一个默认的记录器,一切都应该去:

import logging
logging.basicConfig()

当您使用尚未定义的变量时,您只有问题的原因是这会导致jobTester函数抛出apscheduler正在捕获的错误并尝试使用logging.error()编写错误消息.由于您尚未设置记录器,因此会抱怨.

如果您在python logging上阅读,您会发现有很多方法可以配置它.您可以将所有内容记录到文件中或将其打印到stdout.

标签:python,scheduled-tasks,scheduling
来源: https://codeday.me/bug/20190901/1785048.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有