def test_serialize_complex_schedule(): dt = pendulum.datetime(2019, 1, 3) s = schedules.Schedule( # fire every hour clocks=[clocks.IntervalClock(timedelta(hours=1))], # only on weekdays filters=[filters.is_weekday], # only at 9am or 3pm or_filters=[ filters.at_time(pendulum.time(9)), filters.between_times(pendulum.time(15), pendulum.time(15)), ], # not on january 8 not_filters=[filters.between_dates(1, 8, 1, 8)], # add three hours adjustments=[adjustments.add(timedelta(hours=3))], ) s2 = serialize_and_deserialize(s) assert s2.next(8, after=dt) == [ dt.replace(hour=12), dt.replace(hour=18), dt.add(days=1).replace(hour=12), dt.add(days=1).replace(hour=18), # skip weekend dt.add(days=4).replace(hour=12), dt.add(days=4).replace(hour=18), # skip jan 8! dt.add(days=6).replace(hour=12), dt.add(days=6).replace(hour=18), ]
def test_create_schedule_multiple_filters(): # jan 3 was a thursday dt = pendulum.datetime(2019, 1, 3) s = schedules.Schedule( # fire every hour clocks=[clocks.IntervalClock(timedelta(hours=1))], # only on weekdays filters=[filters.is_weekday], # only at 9am or 3pm or_filters=[ filters.between_times(pendulum.time(9), pendulum.time(9)), filters.between_times(pendulum.time(15), pendulum.time(15)), ], # not on january 8 not_filters=[filters.between_dates(1, 8, 1, 8)], ) assert s.next(8, after=dt) == [ dt.replace(hour=9), dt.replace(hour=15), dt.add(days=1).replace(hour=9), dt.add(days=1).replace(hour=15), # skip weekend dt.add(days=4).replace(hour=9), dt.add(days=4).replace(hour=15), # skip jan 8! dt.add(days=6).replace(hour=9), dt.add(days=6).replace(hour=15), ]
aws_ecr_repo_name = dckr_image_name aws_region = "us-east-2" ############## Schedule when to run the script ############## schedule = Schedule( # fire every day clocks=[clocks.IntervalClock( start_date=pendulum.datetime(2020, 4, 22, 17, 30, tz="America/Toronto"), interval=timedelta(days=1) )], # but only on weekdays filters=[filters.is_weekday], # and not in January TODO: Add TSX Holidays not_filters=[filters.between_dates(1, 1, 1, 31)] ) #tsx_imb_fl.schedule = schedule ############## Storage ecr docker flow ############## dkr_ecr_scrt = PrefectSecret("docker_ecr_login").run() get_ecr_auth_token = ShellTask(helper_script="cd ~") ecr_auth_token = get_ecr_auth_token.run(command=dkr_ecr_scrt) ecr_client = boto3.client('ecr', region_name=aws_region) ecr_token = ecr_client.get_authorization_token()
def test_between_dates(test_dates): dt = pendulum.datetime(2019, 6, 1) filter_fn = filters.between_dates(*test_dates[0]) assert filter_fn(dt) is test_dates[1]
@task def say_hello(): print("hello world") curr_schedule = Schedule( # Fire every min clocks=[ schedules.clocks.IntervalClock(interval=timedelta(minutes=1), start_date=pendulum.datetime( 2019, 1, 1, tz='America/New_York')) ], # Only on weekdays filters=[filters.is_weekday], # and only at 8.15am, 9.30am, 3.50pm, 4pm or_filters=[ filters.between_times(pendulum.time(hour=8, minute=15), pendulum.time(hour=8, minute=15)), filters.between_times(pendulum.time(hour=9, minute=30), pendulum.time(hour=9, minute=30)), filters.between_times(pendulum.time(hour=10, minute=37), pendulum.time(hour=10, minute=37)), filters.between_times(pendulum.time(hour=16), pendulum.time(hour=16)), ], # do not run on Christmas not_filters=[filters.between_dates(12, 25, 12, 25)]) with Flow('Sounds alerts', curr_schedule) as flow: say_hello() flow.run()