Esempio n. 1
0
def get_next_fire_time(conf, last_fire_ts):
    n, unit = conf['every']
    interval = n * SECOND[unit]

    next_ts = last_fire_ts + interval

    at = conf.get('at')

    if at is None:
        return get_time_info(next_ts)

    timezone_name = conf.get('timezone')

    if timezone_name is None:
        tz = tzlocal.get_localzone()
    else:
        tz = pytz.timezone(timezone_name)

    next_dt = datetime.datetime.fromtimestamp(next_ts, tz)
    actual_next_dt = next_dt.replace(**at)

    actual_next_ts = timeutil.datetime_to_ts(actual_next_dt)

    next_fire_time = get_time_info(actual_next_ts)

    if actual_next_ts <= last_fire_ts:
        msg = ('next fire time: %s, is before last fire ts: %f, conf: %s' %
               (repr(next_fire_time), last_fire_ts, repr(conf)))
        raise NextFireTimeError(msg)

    return next_fire_time
Esempio n. 2
0
    def test_datetime_to_ts(self):
        ts = time.time()

        dt = datetime.datetime.fromtimestamp(ts)
        r = timeutil.datetime_to_ts(dt)
        self.assertEqual(ts, r)

        test_timezones = (
            'US/Pacific',
            'Europe/Warsaw',
            'Asia/Shanghai',
        )

        for timezone_name in test_timezones:
            dt = datetime.datetime.fromtimestamp(
                ts, tz=pytz.timezone(timezone_name))

            r = timeutil.datetime_to_ts(dt)
            self.assertEqual(ts, r)
    def test_datetime_to_ts(self):
        ts = time.time()

        dt = datetime.datetime.fromtimestamp(ts)
        r = timeutil.datetime_to_ts(dt)
        self.assertEqual(ts, r)

        test_timezones = (
            'US/Pacific',
            'Europe/Warsaw',
            'Asia/Shanghai',
        )

        for timezone_name in test_timezones:
            dt = datetime.datetime.fromtimestamp(
                ts, tz=pytz.timezone(timezone_name))

            r = timeutil.datetime_to_ts(dt)
            self.assertEqual(ts, r)
Esempio n. 4
0
    def test_parse_with_timezone(self):
        cases = (
            ('2018-04-03 17:45:01', 'Asia/Shanghai', 1522748701),
            ('2018-04-03 17:45:01', 'UTC', 1522748701 + 3600 * 8),
        )

        for time_str, timezone, exp_ts in cases:
            dt = timeutil.parse(time_str, 'mysql', timezone=timezone)
            ts = timeutil.datetime_to_ts(dt)

            self.assertEqual(exp_ts, ts)
    def test_parse_with_timezone(self):
        cases = (
            ('2018-04-03 17:45:01', 'Asia/Shanghai', 1522748701),
            ('2018-04-03 17:45:01', 'UTC', 1522748701 + 3600 * 8),
        )

        for time_str, timezone, exp_ts in cases:
            dt = timeutil.parse(time_str, 'mysql', timezone=timezone)
            ts = timeutil.datetime_to_ts(dt)

            self.assertEqual(exp_ts, ts)