python crontab备选方案-APScheduler&;python守护进程
我使用电脑有困难 与APScheduler一起管理任务列表 (计划程序需要在特定的选定时间(秒分辨率)定期运行它们) 工作(直到按下Ctrl+C),python crontab备选方案-APScheduler&;python守护进程,python,scheduler,python-daemon,Python,Scheduler,Python Daemon,我使用电脑有困难 与APScheduler一起管理任务列表 (计划程序需要在特定的选定时间(秒分辨率)定期运行它们) 工作(直到按下Ctrl+C), from apscheduler.scheduler import Scheduler import logging import signal def job_function(): print "Hello World" def init_schedule(): logging.basicConfig(level=l
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)
样本输出:
信息:apscheduler.threadpool:已启动线程池,其中包含0个核心线程和最多20个线程
信息:apscheduler。计划程序:计划程序已启动
调试:apscheduler。计划程序:正在查找要运行的作业
调试:apscheduler。计划程序:无作业;等待添加作业
信息:apscheduler.scheduler:将作业“作业”功能(触发器:间隔[0:00:30],下次运行时间:2011-10-06 18:30:39)”添加到作业存储“默认”
信息:apscheduler.scheduler:将作业“作业”功能(触发器:间隔[0:00:30],下次运行时间:2011-10-06 18:30:33)”添加到作业存储“默认”
调试:apscheduler。计划程序:正在查找要运行的作业
调试:apscheduler.scheduler:下一次唤醒时间为2011-10-06 18:30:33(10.441128秒)
使用python守护进程,
输出为空。为什么DaemonContext不能正确生成进程
编辑-工作
在阅读了python守护程序源代码之后,我将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守护进程了解不多,但是
job\u function()
中的test\u log
没有定义。同样的问题也发生在init_schedule()
中,您在这里引用了schedule
我对python守护进程了解不多,但是job_function()
中没有定义测试日志。同样的问题也出现在init_schedule()
中,您在这里引用schedule
RockSportsRock,测试日志在main中定义,我以前尝试过运行它,Python解释器没有抱怨。我正在daemon.DaemonContext中导入调度程序,在我看来这是正确的做法,因为当守护程序分叉时,任何打开的套接字或文件都将被迫关闭。不幸的是,没有。我添加了一个示例输出。在第二种情况下,输出为空,并且没有写入test.log。目标是生成一个守护进程pid,任务无限期地运行。能否在with上下文中引入调试日志记录?只是为了看看执行了什么和没有执行什么…我在DaemonContext中添加了调试日志和stdout、stderr,并最终使其正常工作。谢谢你的耐心!忘记将'sched'对象传递给schedule_job调用,在编辑之前,我有:schedule_job(job_函数,120,'2011-10-06 12:30:09')这通常会被try/except构造捕获,但DaemonContext屏蔽了它,隐藏了所有输出。rocksportsrocker,test_log是在main中定义的,我以前试过运行它,Python解释器没有抱怨。我正在daemon.DaemonContext中导入调度程序,在我看来这是正确的做法,因为当守护程序分叉时,任何打开的套接字或文件都将被迫关闭。不幸的是,没有。我添加了一个示例输出。在第二种情况下,输出为空,并且没有写入test.log。目标是生成一个守护进程pid,任务无限期地运行。能否在with上下文中引入调试日志记录?只是为了看看执行了什么和没有执行什么…我在DaemonContext中添加了调试日志和stdout、stderr,并最终使其正常工作。谢谢你的耐心!忘记将'sched'对象传递给schedule_job调用,在编辑之前我有:schedule_job(job_函数,120,'2011-10-06 12:30:09')这通常会被try/except构造捕获,但DaemonContext屏蔽了它,隐藏了所有输出。我在Python中有一个简单的cron替换。它是可用的,入口点脚本是,如果你想给它一个镜头。我还没来得及把它重构成一个单独的应用程序。谢谢Noufal。我试试看。我欢迎你的反馈。我真的应该把它作为一个单独的包发布。我在Python中有一个简单的cron替换。它是可用的,入口点脚本是,如果你想给它一个镜头。我还没来得及把它重构成一个单独的应用程序。谢谢Noufal。我试试看。我欢迎你的反馈。我真的应该把它作为一个单独的包。