我正在寻找Python中的库,它将提供at
和cron
同样的功能。 git
我很想拥有一个纯Python解决方案,而不是依赖于安装在盒子上的工具; 这样,我能够在没有cron的机器上运行。 github
对于不熟悉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.
cron时间表达式语法不过重要,可是我但愿具备这种灵活性。 工具
若是没有什么能够为我提供开箱即用的功能,将不胜感激地收到有关构建基块进行相似操做的任何建议。 ui
编辑我对启动过程不感兴趣,只是对用Python写的“工做”-python函数。 必要时,我认为这将是一个不一样的线程,但不会出如今不一样的过程当中。 spa
为此,我正在寻找cron时间表达式的可表达性,可是在Python中。 线程
Cron 已经存在了不少年,但我正在尝试尽量地便携。 我不能依靠它的存在。 调试
另外一个简单的解决方案是:
from aqcron import At from time import sleep from datetime import datetime # Event scheduling event_1 = At( second=5 ) event_2 = At( second=[0,20,40] ) while True: now = datetime.now() # Event check if now in event_1: print "event_1" if now in event_2: print "event_2" sleep(1)
而类aqcron.At是:
# aqcron.py class At(object): def __init__(self, year=None, month=None, day=None, weekday=None, hour=None, minute=None, second=None): loc = locals() loc.pop("self") self.at = dict((k, v) for k, v in loc.iteritems() if v != None) def __contains__(self, now): for k in self.at.keys(): try: if not getattr(now, k) in self.at[k]: return False except TypeError: if self.at[k] != getattr(now, k): return False return True
“ ... Crontab模块,用于读取和写入crontab文件以及仅经过直接API便可自动访问系统cron。...”
http://pypi.python.org/pypi/python-crontab
还有APScheduler(一个python软件包)。 已经编写和调试。
http://packages.python.org/APScheduler/cronschedule.html
您能够查看PiCloud的[1] Crons [2],但请注意,您的做业不会在您本身的计算机上运行。 若是您每个月使用20个小时以上的计算时间,则还须要付费。
[2] http://docs.picloud.com/cron.html
若是您正在寻找轻巧的结账时间表 :
import schedule import time def job(): print("I'm working...") schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at("10:30").do(job) while 1: schedule.run_pending() time.sleep(1)
披露 :我是那个图书馆的做者。
查看luigi( https://github.com/spotify/luigi )。 它是用python编写的,有一个很好的Web UI来监控任务。 它还有一个依赖图。 对于你须要的东西可能有点过度,但它可能会成功。