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.

Actualización de la base de datos en Heroku a través de un script de Python Flask.

Tengo una aplicación Flask desplegada en Heroku en este momento. Escribí un script para actualizar la base de datos todos los días y lo programé para que se ejecute todos los días usando Heroku Scheduler. El script se ejecuta correctamente, pero me estoy dando cuenta de que no está actualizando la base de datos.

Para desplegar mi aplicación, tengo un archivo wsgi.py

from mi_proyecto import crear_app

app = crear_app()

Mi Procfile es el siguiente:

web: gunicorn wsgi:app

Mi script simplemente importa una función que tengo en mi archivo init.py, que se ve así:

def trabajo(app):
    with app.app_context():
         # actualizar la base de datos y ejecutar el trabajo

Mi script es el siguiente:

from wsgi import app
from mi_proyecto import trabajo

trabajo(app)

Mi pregunta es por qué no se está actualizando la base de datos. ¿Es porque tengo el app_context? ¿Estoy actualizando la base de datos, pero no en el contexto correcto? ¿Es correcto importar la aplicación desde wsgi.py? ¿Es la aplicación correcta la que se está utilizando en Heroku?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible que la base de datos no se esté actualizando porque no estás utilizando el contexto correcto al actualizarla. Al utilizar with app.app_context():, te aseguras de estar trabajando dentro del contexto de la aplicación Flask. Sin embargo, también es posible que haya un error en tu script que esté impidiendo que la base de datos se actualice.

    Es correcto importar la aplicación desde wsgi.py, ya que ahí es donde estás creando la aplicación Flask. En cuanto a si es la aplicación correcta que se está utilizando en Heroku, eso depende de cómo hayas implementado tu aplicación. Si has configurado correctamente tu entorno de Heroku y estás utilizando el mismo código base que en tu entorno de desarrollo local, entonces debería ser la aplicación correcta que se está utilizando.

    Para intentar identificar el problema, puedes agregar algunas declaraciones de registro (logging) a tu función job() para ver si se está ejecutando y para verificar el estado de la actualización de la base de datos. También puedes revisar los registros de Heroku para ver si se están reportando errores cuando se ejecuta la tarea programada.

Comments are closed.