@toobinks

Что этот psycopg2 себе позволяет?

def create_app(config_object=ProdConfig):
    """
    :param config_object: The configuration object to use.
    """
    app = Flask(__name__.split('.')[0])
    app.config.from_object(config_object)
    register_logger(app)
    register_extensions(app)
    register_blueprints(app)
    register_dynamic_preference(app, db) # ПРОБЛЕМА ТУТ
    register_errorhandlers(app)
    register_shellcontext(app)
    register_commands(app)

def register_dynamic_preference(app, db):
    """Register dynamic preference"""
    from appdata.dashboard.models import Preference
    preference_table_name = 'preference'
    with app.app_context():
        if not preference_table_name in [t.name for t in db.metadata.sorted_tables]:
            app.logger.exception('Table PREFERENCE not exists')
            return

        if app.config['DYNAMIC_PREFERENCES']:
            for k, data in app.config['DYNAMIC_PREFERENCES'].items():
                if not Preference.exists(k):
                    Preference.add(k, data['default_value'])
        else:
            app.logger.exception('DYNAMIC_PREFERENCES not available')


После чего Celery перестаёт общаться с базой данных

Traceback (most recent call last):
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 701, in _rollback_impl
celery_high_1 | self.engine.dialect.do_rollback(self.connection)
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 440, in do_rollback
celery_high_1 | dbapi_connection.rollback()
celery_high_1 | psycopg2.DatabaseError: error with status PGRES_TUPLES_OK and no message from the libpq
celery_high_1 |
celery_high_1 | The above exception was the direct cause of the following exception:
celery_high_1 |
celery_high_1 | Traceback (most recent call last):
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/pool.py", line 687, in _finalize_fairy
celery_high_1 | fairy._reset(pool)
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/pool.py", line 827, in _reset
celery_high_1 | self._reset_agent.rollback()
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1621, in rollback
celery_high_1 | self._do_rollback()
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1659, in _do_rollback
celery_high_1 | self.connection._rollback_impl()
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 703, in _rollback_impl
celery_high_1 | self._handle_dbapi_exception(e, None, None, None, None)
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1402, in _handle_dbapi_exception
celery_high_1 | exc_info
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
celery_high_1 | reraise(type(exception), exception, tb=exc_tb, cause=cause)
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 186, in reraise
celery_high_1 | raise value.with_traceback(tb)
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 701, in _rollback_impl
celery_high_1 | self.engine.dialect.do_rollback(self.connection)
celery_high_1 | File "/usr/local/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 440, in do_rollback
celery_high_1 | dbapi_connection.rollback()
celery_high_1 | sqlalchemy.exc.DatabaseError: (psycopg2.DatabaseError) error with status PGRES_TUPLES_OK and no message from the libpq


Если register_dynamic_preference не вызывать из create_app, то всё норм.
Почему и как исправить?
  • Вопрос задан
  • 646 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы