I don't think the problem is with database, because sometimes I have to 
restart the application (flask running as uwsgi) to make it work.

There is no error page but default flask error page (it's running in debug 
= False mode / production mode, so error is just 500 response with no 
content). I checked the errors and there are not errors prior to this 
error. But I will check request logs.

I was thinking to play with configuration 
settings http://flask-sqlalchemy.pocoo.org/2.3/config/#configuration-keys, 
maybe SQLALCHEMY_POOL_RECYCLE would be good place to start? But I'm not 
sure if this would solve the problem. What do you think?

On Wednesday, 7 March 2018 21:35:30 UTC+1, Mike Bayer wrote:
>
> On Wed, Mar 7, 2018 at 2:49 PM, Erol Merdanović <[email protected] 
> <javascript:>> wrote: 
> > Mike, thank you for the reply. Here is the stack trace 
>
>
> your application has encountered an error which caused it to 
> invalidate the connection, such as the database was restarted or the 
> connection was lost.  Then it failed to handle the error correctly and 
> continued to use the same invalidated connection, specifically within 
> the the test "current_user.is_authenticated:".   If perhaps your 
> application is attempting to display an error page, which itself is 
> attempting to interrogate the database in the same request, that would 
> cause this problem.  To test this you'd want to look in your logs for 
> errors that occur prior to this one as well as simplify your error 
> handling logic such that it shows a plain static page with no database 
> elements within it. 
>
> > 
> > AttributeError: 'Connection' object has no attribute 
> > '_Connection__connection' 
> >   File "sqlalchemy/engine/base.py", line 1112, in _execute_context 
> >     conn = self.__connection 
> > InvalidRequestError: Can't reconnect until invalid transaction is rolled 
> > back 
> >   File "sqlalchemy/engine/base.py", line 1114, in _execute_context 
> >     conn = self._revalidate_connection() 
> >   File "sqlalchemy/engine/base.py", line 424, in _revalidate_connection 
> >     "Can't reconnect until invalid " 
> > StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconnect 
> until 
> > invalid transaction is rolled back [SQL: 'SELECT users.id AS users_id, 
> > users.email AS users_email, users.password AS users_password, 
> > users.first_name AS users_first_name, users.last_name AS 
> users_last_name, 
> > users.status AS users_status, users.language_code AS 
> users_language_code, 
> > users.must_change_password_on_login AS 
> users_must_change_password_on_login, 
> > users.must_change_information_on_login AS 
> > users_must_change_information_on_login, users.was_sent_welcome_email AS 
> > users_was_sent_welcome_email, users.created_at AS users_created_at, 
> > users.creation_type AS users_creation_type, users.last_login_at AS 
> > users_last_login_at, users.login_key AS users_login_key, users.api_key 
> AS 
> > users_api_key, users.settings AS users_settings, users.role AS 
> users_role, 
> > users.search_vector AS users_search_vector, partner_users.user_id AS 
> > partner_users_user_id, partner_users.partner_id AS 
> partner_users_partner_id, 
> > store_users.user_id AS store_users_user_id, store_users.dashboard AS 
> > store_users_dashboard \nFROM users LEFT OUTER JOIN partner_users ON 
> users.id 
> > = partner_users.user_id LEFT OUTER JOIN store_users ON users.id = 
> > store_users.user_id \nWHERE users.api_key = %(api_key_1)s \n LIMIT 
> > %(param_1)s'] [parameters: [{}]] 
> >   File "flask/app.py", line 1982, in wsgi_app 
> >     response = self.full_dispatch_request() 
> >   File "flask/app.py", line 1614, in full_dispatch_request 
> >     rv = self.handle_user_exception(e) 
> >   File "flask_cors/extension.py", line 161, in wrapped_function 
> >     return cors_after_request(app.make_response(f(*args, **kwargs))) 
> >   File "flask/app.py", line 1517, in handle_user_exception 
> >     reraise(exc_type, exc_value, tb) 
> >   File "flask/_compat.py", line 33, in reraise 
> >     raise value 
> >   File "flask/app.py", line 1612, in full_dispatch_request 
> >     rv = self.dispatch_request() 
> >   File "flask/app.py", line 1598, in dispatch_request 
> >     return self.view_functions[rule.endpoint](**req.view_args) 
> >   File "flask_login/utils.py", line 226, in decorated_view 
> >     elif not current_user.is_authenticated: 
> >   File "werkzeug/local.py", line 347, in __getattr__ 
> >     return getattr(self._get_current_object(), name) 
> >   File "werkzeug/local.py", line 306, in _get_current_object 
> >     return self.__local() 
> >   File "flask_login/utils.py", line 26, in <lambda> 
> >     current_user = LocalProxy(lambda: _get_user()) 
> >   File "flask_login/utils.py", line 302, in _get_user 
> >     current_app.login_manager._load_user() 
> >   File "flask_login/login_manager.py", line 313, in _load_user 
> >     return self._load_from_request(request) 
> >   File "flask_login/login_manager.py", line 370, in _load_from_request 
> >     user = self.request_callback(request) 
> >   File "core/app.py", line 81, in load_user_from_request 
> >     api_key=api_key 
> >   File "sqlalchemy/orm/query.py", line 2755, in first 
> >     ret = list(self[0:1]) 
> >   File "sqlalchemy/orm/query.py", line 2547, in __getitem__ 
> >     return list(res) 
> >   File "sqlalchemy/orm/query.py", line 2855, in __iter__ 
> >     return self._execute_and_instances(context) 
> >   File "sqlalchemy/orm/query.py", line 2878, in _execute_and_instances 
> >     result = conn.execute(querycontext.statement, self._params) 
> >   File "sqlalchemy/engine/base.py", line 945, in execute 
> >     return meth(self, multiparams, params) 
> >   File "sqlalchemy/sql/elements.py", line 263, in _execute_on_connection 
> >     return connection._execute_clauseelement(self, multiparams, params) 
> >   File "sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement 
> >     compiled_sql, distilled_params 
> >   File "sqlalchemy/engine/base.py", line 1121, in _execute_context 
> >     None, None) 
> >   File "sqlalchemy/engine/base.py", line 1402, in 
> _handle_dbapi_exception 
> >     exc_info 
> >   File "sqlalchemy/util/compat.py", line 203, in raise_from_cause 
> >     reraise(type(exception), exception, tb=exc_tb, cause=cause) 
> >   File "sqlalchemy/util/compat.py", line 186, in reraise 
> >     raise value.with_traceback(tb) 
> >   File "sqlalchemy/engine/base.py", line 1114, in _execute_context 
> >     conn = self._revalidate_connection() 
> >   File "sqlalchemy/engine/base.py", line 424, in _revalidate_connection 
> >     "Can't reconnect until invalid " 
> > 
> > 
> > 
> > On Wednesday, 7 March 2018 15:02:04 UTC+1, Mike Bayer wrote: 
> >> 
> >> SQLAlchemy generates this error for a good reason, however it is less 
> >> typical when using the ORM Session.    Would need at least a stack 
> >> trace to have any idea what is happening for you. 
> >> 
> >> On Wed, Mar 7, 2018 at 7:31 AM, Erol Merdanović <[email protected]> 
> wrote: 
> >> > Hello 
> >> > 
> >> > I'm using latest sqlalchemy (this was also occurring with 1.1.x 
> branch) 
> >> > with 
> >> > flask and flask-sqlalchemy. For some reason I'm randomly getting this 
> >> > error. 
> >> > 
> >> > 1. Checking the group there were similar problems but some mentioned 
> >> > that 
> >> > problem is with database going away 
> >> > 2. Others mentioned that session is not correctly started/closed. As 
> >> > mentioned, I'm using flask-sqlalchemy. 
> >> > 
> >> > Is anyone else experiencing same problem? Any tips how to approach 
> this? 
> >> > Is 
> >> > this flask-sqlalchemy problem? 
> >> > 
> >> > -- 
> >> > SQLAlchemy - 
> >> > The Python SQL Toolkit and Object Relational Mapper 
> >> > 
> >> > http://www.sqlalchemy.org/ 
> >> > 
> >> > To post example code, please provide an MCVE: Minimal, Complete, and 
> >> > Verifiable Example. See http://stackoverflow.com/help/mcve for a 
> full 
> >> > description. 
> >> > --- 
> >> > You received this message because you are subscribed to the Google 
> >> > Groups 
> >> > "sqlalchemy" group. 
> >> > To unsubscribe from this group and stop receiving emails from it, 
> send 
> >> > an 
> >> > email to [email protected]. 
> >> > To post to this group, send email to [email protected]. 
> >> > Visit this group at https://groups.google.com/group/sqlalchemy. 
> >> > For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > SQLAlchemy - 
> > The Python SQL Toolkit and Object Relational Mapper 
> > 
> > http://www.sqlalchemy.org/ 
> > 
> > To post example code, please provide an MCVE: Minimal, Complete, and 
> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> > description. 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "sqlalchemy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > Visit this group at https://groups.google.com/group/sqlalchemy. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to