安排 Python 脚本每小时准确运行

新手上路,请多包涵

在我问之前, Cron Jobs 和 Task Scheduler 将是我最后的选择,这个脚本将在 Windows 和 Linux 上使用,我宁愿有一个编码出来的方法来完成这个而不是留给最终用户来完成。

是否有可用于安排任务的 Python 库?我将需要每小时运行一次函数,但是,随着时间的推移,如果我每小时运行一次脚本并使用 .sleep,由于延迟,“每小时一次”将在与前一天不同的时间运行执行/运行脚本和/或函数所固有的。

使用 Cron Job 或使用 Task Scheduler 安排功能的情况下,安排功能在一天中的特定时间(多次)运行的 最佳 方法是什么?

或者,如果这不可能,我也希望您能提供意见。

AP Scheduler 完全符合我的需求。

版本 < 3.0

 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')

出去:

 >Hello World
>2014-03-28 09:44:00.016.492
>Hello World
>2014-03-28 09:45:00.0.14110

版本 > 3.0

(来自下面的 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 10 seconds.')

@sched.scheduled_job('cron', day_of_week='mon-fri', hour=10)
def scheduled_job():
    print('This job is run every weekday at 10am.')

sched.configure(options_from_ini_file)
sched.start()

原文由 sunshinekitty 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 453
2 个回答

也许这会有所帮助: Advanced Python Scheduler

这是他们文档中的一小段代码:

 from apscheduler.schedulers.blocking import BlockingScheduler

def some_job():
    print "Decorated job"

scheduler = BlockingScheduler()
scheduler.add_job(some_job, 'interval', hours=1)
scheduler.start()

原文由 Unknown 发布,翻译遵循 CC BY-SA 3.0 许可协议

每小时过后每 10 分钟运行一次。

 from datetime import datetime, timedelta

while 1:
    print 'Run something..'

    dt = datetime.now() + timedelta(hours=1)
    dt = dt.replace(minute=10)

    while datetime.now() < dt:
        time.sleep(1)

原文由 Shane Davies 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题