0

時間ベースのイベントを解析するシステムをコーディングしています。これらのイベントに対して、照合用の cron のような構文を提供できる抑制システムを実装したいと考えています。

たとえば、次の場合は抑制します...

  1. .. イベントは月の最終金曜日に発生します
  2. .. イベントは平日の午後 4 時から午後 5 時の間に行われます
  3. .. イベントは日曜日に発生します

等々。

私たちはPythonを使用しているので、この種のことを行うためのモジュールがあることを望んでいましたが、私の検索スキルは私を失望させています(イベントのスケジュールに関する多くの結果、私は反対を望んでいます-現在の時刻は定義されたものと一致しますか?スケジュール)。

または、時間を保存してスケジュールと比較する最良の方法について提案があれば、ゼロから書いて喜んでいます。

編集:

明確にするために、抑制スケジュールは確定されていないため、特定のケースを処理する関数を単純にコーディングすることはできません。スケジュールはデータベースに保存し、イベントに関連付ける必要があるため、大まかに次のように実行できます。

sql_rows = ..... "SELECT * FROM suppressions WHERE event_id = ?"

for row in sql_rows:
    if matchesSchedule(current_time,row):
        print "This should be suppressed"

そのため、テーブルに格納できる形式でスケジュールを表現し、列を現在の時間コンポーネントと照合する必要があります。

4

1 に答える 1

0

タイムパターンチェッカーを自分で実装することをお勧めします。datetimeこれは、オブジェクトのように sth を使用するのは非常に簡単です (それが気に入れtimeば、同様に使用できます)。また、Python 構文では、「分、時間、秒の合計は 42 になる」などの表現もできます。つまり、cron のようなパターンでは表現できないことです。

import datetime

def matchesTimePattern1(d):
  return (
    d.weekday() == 4 and  # Friday?
    d.month != (d + datetime.timedelta(7)).month  # next week is different month?
  )

def matchesTimePattern2(d):
  return (
    d.weekday() in (0, 1, 2, 3, 4) and  # weekday?
    d.hour == 16  # at 4pm (up to 4:59:59pm)
  )

def matchesTimePattern3(d):
  return (
    d.weekday() == 6  # Sunday?
  )

d = datetime.datetime.now()
print matchesTimePattern1(d)
print matchesTimePattern2(d)
print matchesTimePattern3(d)
于 2013-08-02T08:54:39.690 に答える