from datetime import date, timedelta from tracker.logger import get_logger from tracker import db, mailer from tracker.labels import arista logger = get_logger(__name__) logger.info("Creating Arista archive") try: db.Session.execute('analyze sc_tracks') logger.info("Done analyze") min_part = db.Session.execute( 'select floor(min(scid)/15e6)::int from sc_tracks where created_at = current_date - 181' ).fetchone()[0] max_part = db.ScTrackStats.max_partition_num() today = date.today() # start from previous day since today's data might not be ready. date_windows = [date.today() - timedelta(days=(i+1)) for i in range(0, 85, 7)] logger.info(f"Min partition: {min_part}, Max partition: {max_part}, windows: {date_windows}") sheet_id = '1Z2p6yDdLN_H2IEjpa9_DP6y5_X5PwIK6Sj9p21v3jts' logger.info(f"Starting dump to {sheet_id}") arista.dump_data_to_gsheet(worksheet_id=sheet_id, min_part_num=min_part, max_part_num=max_part, windows=date_windows) except Exception as e: mailer.send_simple_message("Arista dump failed", text=str(e)) raise else: mailer.send_simple_message("Arista dump succeeded", text="Data updated")