我正在尋找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來監控任務。 它還有一個依賴圖。 對於你須要的東西可能有點過度,但它可能會成功。