# STEP 4 create Data Availability Schedule scheduleId = createScheduleExtration(listId, reportId) # STEP 5 determine Overall Average Arrival Time in UTC overallAverageArrivalUtc = getInstrumentTriggerDetail(scheduleId) done = False # STEP 6 schedule a background job to attempt data extraction at the arrival time. if overallAverageArrivalUtc is None: # All trigger's status is Arrived pollForExtraction(scheduleId) cleanUp() else: # Some triggers are not arrived scheduler = BackgroundScheduler() scheduler.timezone = pytz.utc scheduler.add_job(pollForExtraction, 'date', run_date=overallAverageArrivalUtc, args=[scheduleId]) scheduler.start() try: # This is here to simulate application activity (which keeps the main thread alive). while (done == False): time.sleep(5) cleanUp() except (KeyboardInterrupt, SystemExit): # Not strictly necessary if daemonic mode is enabled but should be done if possible scheduler.shutdown() cleanUp()