我正在寻找一个Python的库,它将提供at和cron功能相似.
我非常喜欢使用纯Python解决方案,而不是依赖于盒子上安装的工具; 这样我就可以在没有cron的机器上运行.
对于那些不熟悉的人cron:您可以根据以下表达式安排任务:
0 2 * * 7 /usr/bin/run-backup # run the backups at 0200 on Every Sunday
0 9-17/2 * * 1-5 /usr/bin/purge-temps # run the purge temps command, every 2 hours between 9am and 5pm on Mondays to Fridays.
Run Code Online (Sandbox Code Playgroud)
cron时间表达式语法不那么重要,但我希望能有这种灵活性.
如果没有任何东西可以为我开箱即用,那么任何关于构建模块的建议都会感激不尽.
编辑 我对启动进程不感兴趣,只是用Python编写的"作业" - python函数.必要时我认为这将是一个不同的主题,但不是在一个不同的过程中.
为此,我正在寻找cron时间表达式的表现力,但在Python中.
Cron 已经存在多年了,但我试图尽可能地便携.我不能依赖它的存在.
在我问之前,Cron Jobs和Task Scheduler将是我的最后选择,这个脚本将在Windows和Linux之间使用,我更愿意使用编码方法来完成此操作,而不是将其留给最终用户完成.
是否有可用于安排任务的Python库?我需要每小时运行一次函数,但是,如果我每小时运行一次脚本并使用.sleep,"每小时一次"将在前一天的不同时间运行,因为延迟执行/运行脚本和/或功能所固有的.
在不使用Cron作业或使用任务计划程序进行计划的情况下,安排函数在一天中的特定时间(不止一次)运行的最佳方法是什么?
或者,如果这是不可能的,我也希望你的意见.
import datetime
import time
from apscheduler.scheduler import Scheduler
# Start the scheduler
sched = Scheduler()
sched.daemonic = False
sched.start()
def job_function():
print("Hello World")
print(datetime.datetime.now())
time.sleep(20)
# Schedules job_function to be run once each minute
sched.add_cron_job(job_function, minute='0-59')
Run Code Online (Sandbox Code Playgroud)
出:
>Hello World
>2014-03-28 09:44:00.016.492
>Hello World
>2014-03-28 09:45:00.0.14110
Run Code Online (Sandbox Code Playgroud)
(来自Animesh Pandey的答案如下)
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', seconds=10)
def timed_job():
print('This job is run every …Run Code Online (Sandbox Code Playgroud) 我有一个python脚本,我想定期运行.我正在运行Windows 7.实现这一目标的最佳方法是什么?最简单的方法?