2012-08-25 38 views
3

我正在尋找一個事件調度程序,如Java中的quartz,用於我的python項目。Python:Event Schedular like quartz

請建議我一些很好的調度在Python

我的要求

1)一些間隔

感謝後,發送電子郵件或短信給用戶!

回答

1

celery可能是任務矯枉過正以及quartz

@celery.task 
def sendmail(from_addr, to_addrs, msg): 
    "send mail here" 

sendmail.apply_async(args, countdown=n) # send email in `n` seconds 
+0

@Sebastian發送郵件不僅我的任務可能是發送短信 – user1614526

1

也許APScheduler是你想要的。

這是例子:

from apscheduler.scheduler import Scheduler 

sched = Scheduler() 

@sched.interval_schedule(hours=3) 
def some_job(): 
    print "Decorated job" 

sched.configure(options_from_ini_file) 
sched.start() 
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