gpt4 book ai didi

python crontab 替代方案 - APScheduler 和 python-daemon

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:20 25 4
gpt4 key购买 nike

我在使用时遇到问题 python-daemon 1.6使用 APScheduler 来管理任务列表。

(调度程序需要在特定的选定时间定期运行它们 - 秒分辨率)

工作(直到按 Ctrl+C),

from apscheduler.scheduler import Scheduler
import logging
import signal

def job_function():
print "Hello World"

def init_schedule():
logging.basicConfig(level=logging.DEBUG)
sched = Scheduler()
# Start the scheduler
sched.start()

return sched

def schedule_job(sched, function, periodicity, start_time):
sched.add_interval_job(job_function, seconds=periodicity, start_date=start_time)

if __name__ == "__main__":

sched = init_schedule()
schedule_job(sched, job_function, 120, '2011-10-06 12:30:09')
schedule_job(sched, job_function, 120, '2011-10-06 12:31:03')

# APSScheduler.Scheduler only works until the main thread exits
signal.pause()
# Or
#time.sleep(300)

示例输出:

INFO:apscheduler.threadpool:启动线程池,核心线程数为 0,最大线程数为 20信息:apscheduler.scheduler:调度程序已启动DEBUG:apscheduler.scheduler:寻找要运行的作业调试:apscheduler.scheduler:没有作业;等待添加作业信息:apscheduler.scheduler:将作业“job_function(触发器:间隔[0:00:30],下次运行时间:2011-10-06 18:30:39)”添加到作业存储“默认”信息:apscheduler.scheduler:将作业“job_function(触发器:间隔[0:00:30],下次运行时间:2011-10-06 18:30:33)”添加到作业存储“默认”DEBUG:apscheduler.scheduler:寻找要运行的作业DEBUG:apscheduler.scheduler:下次唤醒将于 2011-10-06 18:30:33(10.441128 秒内)

使用 python-daemon,输出为空白。为什么 DaemonContext 没有正确生成进程?

编辑 - 工作

阅读 python-daemon 源代码后,我将 stdout 和 stderr 添加到 DaemonContext 中,终于能够知道发生了什么。

def job_function():
print "Hello World"
print >> test_log, "Hello World"

def init_schedule():
logging.basicConfig(level=logging.DEBUG)
sched = Scheduler()
sched.start()

return sched

def schedule_job(sched, function, periodicity, start_time):
sched.add_interval_job(job_function, seconds=periodicity, start_date=start_time)

if __name__ == "__main__":

test_log = open('daemon.log', 'w')
daemon.DaemonContext.files_preserve = [test_log]

try:
with daemon.DaemonContext():
from datetime import datetime
from apscheduler.scheduler import Scheduler
import signal

logging.basicConfig(level=logging.DEBUG)
sched = init_schedule()

schedule_job(sched, job_function, 120, '2011-10-06 12:30:09')
schedule_job(sched, job_function, 120, '2011-10-06 12:31:03')

signal.pause()

except Exception, e:
print e

最佳答案

我对python-daemon不太了解,但是job_function()中的test_log没有定义。在引用 Scheduleinit_schedule() 中也会出现同样的问题。

关于python crontab 替代方案 - APScheduler 和 python-daemon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com