-2

ゲーム コミュニティ用のイベント通知システムを作成しています。ただし、どこから始めればよいか完全にはわかりません。

たとえば、イベントとその時間の辞書があります。

{'Game Night': 19:00 2013-06-29,
'3CB vs ST3 Match': 18:45 2013-07-02,
'Website Maintainance': 13:00 2013-07-16,
etc}

時刻は、strptime() を使用して、正しい日時形式に既に変換されています。私が今必要としているのは、これらのイベントのいずれかが発生しようとしているときにユーザーに通知することです (たとえば、15 分のアラート、次に 5 分のアラート)。

例えば:

"注意: 3CB vs ST3 の試合は 15 分後に開始されます!"
10分後…
"注意: 3CB vs ST3 の試合が 5 分後に始まります!"

私の質問は次のとおりです。イベントが近づくまで(現在の時刻とイベントの時刻を比較して)Pythonを待機させてから、アクション(私の場合は通知など)を実行するにはどうすればよいですか?

PS私はPython 2.7.5を使用しています(APIの更新がないため)

4

1 に答える 1

0

チェックが True と評価されるまでループを試みます。

import time
interval = 0.2  # nr of seconds
while True:
    stop_looping = myAlertCheck()
    if stop_looping:
        break
    time.sleep(interval)

スリープは、他のタスクのための CPU 時間を与えます。

編集

わかりました、あなたの質問が正確に何であるかわかりません。最初に、Python にイベントを「待機」させる方法を知りたいと思っていました。イベントの日付と現在の日付を比較する方法を知りたいようです。以下はより完全なアプローチだと思います。自分で詳細を記入できると思いますか??

import time
from datetime import datetime

interval = 3  # nr of seconds    
events = {
    'Game Night': '14:00 2013-06-23',
    '3CB vs ST3 Match': '18:45 2013-07-02',
    'Website Maintainance': '13:00 2013-07-16', 
}

def myAlertCheck(events):
    for title, event_date in events.iteritems():
        ed = datetime.strptime(event_date, '%H:%M %Y-%m-%d')
        delta_s = (datetime.now() - ed).seconds
        if delta_s < (15 * 60):
            print 'within 15 minutes %s starts' % title
            return True

while True:
    stop_looping = myAlertCheck(events)
    if stop_looping:
        break
    time.sleep(interval)
于 2013-06-23T09:51:27.177 に答える