1

Python で cron 式を使用してスケジュールされたジョブを実行しようとしています。私はpythonが初めてで、Javaでクォーツスケジューラを使用してほぼ同じことを達成しました。現在、Python で apscheduler を使用しようとしています。これを使用してこれを行うことが可能であることを知っています

crontrig = CronTrigger(minute='*', second = '*');

しかし、私は cron 式 (「0/5 * * * * *」など) を扱っていましたが、式を直接解析して CronTrigger を生成できるものがあるかどうかを知りたいです。

4

3 に答える 3

3

@アレックスが述べたように。値をトリガーにマップする関数を作成しました。

以下の関数は、年、月、日、週、曜日、時、分、秒の順にタプルを返します。いくつかの提案を期待しています。

def evaluate(self, expression):
    '''
    order of values
    year, month, day, week, day_of_week, hour, minute, second, start_date, end_date, timezone
    '''
    splitValues = expression.split();
    for i in range(0,8):
        if (i == 0):
            if (splitValues[0] == '?'):
                year = None;
            else:
              year = splitValues[0];
        if (i == 1):
            if (splitValues[1] == '?'):
                month = None;
            else:
                month = splitValues[1];
        if (i == 2):
            if (splitValues[2] == '?'):
                day = None;
            else:
                day = splitValues[2];
        if (i == 3):
            if (splitValues[3] == '?'):
                week = None;
            else:
              week = splitValues[3];
        if (i == 4):
            if (splitValues[4] == '?'):
                day_of_week = None;
            else:
                day_of_week = splitValues[4];
        if (i == 5):
            if (splitValues[5] == '?'):
                hour = None;
            else:
                hour = splitValues[5];
        if (i == 6):
            if (splitValues[6] == '?'):
                minute = None;
            else:
                minute = splitValues[6];
        if (i == 7):
            if (splitValues[7] == '?'):
                second = None;
            else:
                second = splitValues[7];
    return year, month, day, week, day_of_week, hour, minute, second;

この式を使用して createTrigger 関数を作成しました

def getTrigger(self,cronExpression): 
    year, month, day, week,  day_of_week, hour, minute, second = evaluate(cronExpression);
    trigger = CronTrigger(year, month, day, week, day_of_week, hour, minute, second)
    return trigger;
于 2015-03-04T12:29:22.587 に答える