3

Python プロジェクト用に Java の Quartz のようなイベント スケジューラを探しています。

Pythonで良いスケジューラを教えてください

私の要件

1) 一定の間隔をあけて、ユーザーに電子メールまたは SMS を送信します。

ありがとう !

4

3 に答える 3

2

多分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()
于 2012-08-25T08:55:30.210 に答える
1

celeryquartzタスクだけでなくやり過ぎかもしれません:

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

sendmail.apply_async(args, countdown=n) # send email in `n` seconds
于 2012-08-25T06:54:24.433 に答える
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
于 2012-09-10T22:55:42.573 に答える