from clearml import Task
from clearml.automation import TaskScheduler


def simple_function():
    print('This code is executed in a background thread, '
          'on the same machine as the TaskScheduler process')
    # add some logic here
    print('done')


# Create the scheduler controller
scheduler = TaskScheduler()

# Run the pipeline Task 'pipeline demo, every day at 10:30am
scheduler.add_task(
    name='recurring pipeline job',
    schedule_task_id=Task.get_task(project_name='examples', task_name='Pipeline demo'),
    queue='default',
    minute=30,
    hour=10,
    day=1,
    recurring=True,
)


# a few more Examples:
#         Launch every 15 minutes
#             add_task(schedule_task_id='1235', queue='default', minute=15)
#         Launch every 1 hour
#             add_task(schedule_task_id='1235', queue='default', hour=1)
#         Launch every 1 hour at hour:30 minutes (i.e. 1:30, 2:30 etc.)
#             add_task(schedule_task_id='1235', queue='default', hour=1, minute=30)
#         Launch every day at 22:30 (10:30 pm)
#             add_task(schedule_task_id='1235', queue='default', minute=30, hour=22, day=1)
#         Launch every other day at 7:30 (7:30 am)
#             add_task(schedule_task_id='1235', queue='default', minute=30, hour=7, day=2)
#         Launch every Saturday at 8:30am (notice `day=0`)
#             add_task(schedule_task_id='1235', queue='default', minute=30, hour=8, day=0, weekdays=['saturday'])
#         Launch every 2 hours on the weekends Saturday/Sunday (notice `day` is not passed)
#             add_task(schedule_task_id='1235', queue='default', hour=2, weekdays=['saturday', 'sunday'])
#         Launch once a month at the 5th of each month
#             add_task(schedule_task_id='1235', queue='default', month=1, day=5)
#         Launch once a year on March 4th of each year
#             add_task(schedule_task_id='1235', queue='default', year=1, month=3, day=4)


# Run a simple logic function, every 2 hours, at minute 30 of every hour, only on business days (mon-fri)
scheduler.add_task(
    name='workdays mock job',
    schedule_function=simple_function,
    minute=30,
    hour=2,
    weekdays=['monday', 'tuesday', 'wednesday', 'thursday', 'friday'],
    recurring=True,
)

#scheduler.start_remotely(queue='services')
scheduler.start()

print('This line will run remotely')
