如何在Python中得到相似於Cron的調度程序? [關閉]

關閉。 這個問題是 題外話 。 它當前不接受答案。

想改善這個問題嗎? 更新問題 ,使其成爲Stack Overflow 的主題html

3個月前關閉。 python

我正在尋找Python中的庫,它將提供atcron同樣的功能。 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 已經存在了不少年,但我正在嘗試儘量地便攜。 我不能依靠它的存在。 調試


#1樓

另外一個簡單的解決方案是:

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

#2樓

「 ... Crontab模塊,用於讀取和寫入crontab文件以及僅經過直接API便可自動訪問系統cron。...」

http://pypi.python.org/pypi/python-crontab

還有APScheduler(一個python軟件包)。 已經編寫和調試。

http://packages.python.org/APScheduler/cronschedule.html


#3樓

您能夠查看PiCloud的[1] Crons [2],但請注意,您的做業不會在您本身的計算機上運行。 若是您每個月使用20個小時以上的計算時間,則還須要付費。

[1] http://www.picloud.com

[2] http://docs.picloud.com/cron.html


#4樓

若是您正在尋找輕巧的結賬時間表

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)

披露 :我是那個圖書館的做者。


#5樓

查看luigi( https://github.com/spotify/luigi )。 它是用python編寫的,有一個很好的Web UI來監控任務。 它還有一個依賴圖。 對於你須要的東西可能有點過度,但它可能會成功。

相關文章
相關標籤/搜索