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.

El proceso de reloj de Heroku sigue fallando.

Estoy tratando de utilizar APScheduler para verificar periódicamente una base de datos y enviar un correo electrónico si es necesario. Desafortunadamente, cada vez que despliego en Heroku, obtengo este mismo error. El código funcionaba perfectamente bien cuando lo ejecuté localmente.

Este es mi código:

from flask_apscheduler import APScheduler, scheduler

<h1>from pytz import timezone</h1>

<h1>from sendgrid import SendGridAPIClient</h1>

<h1>from sendgrid.helpers.mail import Mail</h1>

<h1>from models import db, User, Applications, Tasks, Contact</h1>

<h1>from datetime import datetime, timedelta</h1>

<h1>from flask import current_app as app</h1>

s = APScheduler()

def enviar_correo():
    print("Hola")

s.add_job(id='Enviar correo', func=enviar_correo, trigger='interval', minutes=1)
s.start()
print("HolaTest")

Comenté la mayoría de las importaciones solo para probar el proceso del reloj sin la interferencia de otros módulos.

Sigo obteniendo este error:

2021-12-04T07:37:14.422436+00:00 heroku[clock.1]: Iniciando proceso con el comando `python /app/backend/clock.py`
2021-12-04T07:37:15.106399+00:00 heroku[clock.1]: El estado cambió de iniciando a en ejecución
2021-12-04T07:37:16.801846+00:00 heroku[clock.1]: Proceso finalizado con el estado 0
2021-12-04T07:37:16.877624+00:00 heroku[clock.1]: El estado cambió de en ejecución a fallido
2021-12-04T07:37:16.601432+00:00 app[clock.1]: /app/.heroku/python/lib/python3.9/site-packages/apscheduler/util.py:95: Advertencia de uso de Pytz: El atributo de zona es específico de la interfaz de pytz; por favor, migre a un proveedor de zona horaria nuevo. Para obtener más detalles sobre cómo hacerlo, consulte https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
2021-12-04T07:37:16.601448+00:00 app[clock.1]:   if obj.zone == 'local':
2021-12-04T07:37:16.604340+00:00 app[clock.1]: /app/.heroku/python/lib/python3.9/site-packages/apscheduler/triggers/interval.py:66: Advertencia de uso de Pytz: El método de normalización ya no es necesario, ya que esta zona horaria admite el atributo de plegado (PEP 495). Para obtener más detalles sobre cómo migrar a una implementación compatible con PEP 495, consulte https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
2021-12-04T07:37:16.604342+00:00 app[clock.1]:   return self.timezone.normalize(next_fire_time)
2021-12-04T07:37:16.610777+00:00 app[clock.1]: HolaTest
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error no se refiere directamente a la biblioteca APScheduler, sino a la biblioteca Pytz que se utiliza para el manejo de zonas horarias. Específicamente, el PytzUsageWarning indica que se han realizado cambios en la biblioteca que deben tenerse en cuenta en el código que la utiliza.

    Para resolver este problema, es posible que desee considerar cambiar a un proveedor de zonas horarias diferente que sea recomendado por Pytz. Alternativamente, es posible que pueda suprimir la advertencia utilizando warnings.filterwarnings() o el módulo logging.

    También es importante destacar que el proceso principal parece terminar correctamente, pero el proceso secundario muere inmediatamente después de empezar. Es posible que haya un problema con el proceso secundario o que el entorno de Heroku esté causando que falle. Es posible que se necesite realizar pruebas adicionales y depuración para determinar la causa raíz del problema.

Comments are closed.