es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema con la biblioteca de programación en Python

Estoy intentando usar la biblioteca schedule de Python para ejecutar un script todos los días a medianoche en GMT-7. Supongo que está utilizando la hora GMT o la hora del sistema, así que lo configuré para que se ejecute a las 17:00 todos los días, pero por alguna razón comienza de inmediato cada vez que lo ejecuto. Este es el código que estoy utilizando.

schedule.every().day.at("17:00").do(getRegressionData(subredditList))
while True:
    schedule.run_pending()
    time.sleep(1)

¿Alguna idea de qué podría estar causando esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que el método do de la librería schedule requiere una función llamable como argumento. Sin embargo, en este código, la función se está llamando inmediatamente y su valor de retorno se pasa como argumento en su lugar. Para solucionar esto, puedes definir una función envolvente que llame a la función getRegressionData(subredditList) y pasar la función envolvente al método do. Además, para programar la tarea en GMT-7, puedes usar la librería pytz para obtener el objeto de zona horaria correspondiente a GMT-7 y pasarlo al método schedule. Aquí está el código actualizado:

    import schedule
    import time
    import pytz
    
    def run_getRegressionData():
        subredditList = # tu lista de subreddits
        getRegressionData(subredditList)
    
    gmt = pytz.timezone('Etc/GMT+7')
    schedule.every().day.at("00:00").do(run_getRegressionData).timezone(gmt)
    
    while True:
        schedule.run_pending()
        time.sleep(1)
    

    En este código, la función run_getRegressionData se define como una función envolvente que llama a la función getRegressionData(subredditList) con los argumentos apropiados. El método timezone se utiliza para establecer la zona horaria en GMT-7 utilizando el objeto de zona horaria de pytz, que luego se pasa al método schedule.

Comments are closed.