When multiple database sessions are created (e.g. via python Threading ) and a new app is created with a SQLAlchemy session, the following is observed:
Traceback (most recent call last):
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1281, in _execute_context
self.dispatch.after_cursor_execute(
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/event/attr.py", line 322, in __call__
fn(*args, **kw)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/beeline/middleware/flask/__init__.py", line 113, in after_cursor_execute
query_duration = datetime.datetime.now() - self.query_start_time
AttributeError: 'HoneyDBMiddleware' object has no attribute 'query_start_time'
Traceback (most recent call last):
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1281, in _execute_context
self.dispatch.after_cursor_execute(
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/event/attr.py", line 322, in __call__
fn(*args, **kw)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/beeline/middleware/flask/__init__.py", line 113, in after_cursor_execute
query_duration = datetime.datetime.now() - self.query_start_time
AttributeError: 'HoneyDBMiddleware' object has no attribute 'query_start_time'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/beeline/middleware/flask/__init__.py", line 56, in __call__
return self.app(environ, _start_response)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/chris/Documents/programming/python/app/app/blueprints/checkout/__init__.py", line 192, in thankyou
send_welcome_email()
File "/home/chris/Documents/programming/python/app/app/email.py", line 79, in send_welcome_email
return render_template("thankyou.html")
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/templating.py", line 136, in render_template
ctx.app.update_template_context(context)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/flask/app.py", line 838, in update_template_context
context.update(func())
File "/home/chris/Documents/programming/python/app/app/views.py", line 60, in inject_template_globals
company = Company.query.first()
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3429, in first
ret = list(self[0:1])
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3203, in __getitem__
return list(res)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3535, in __iter__
return self._execute_and_instances(context)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3560, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
return meth(self, multiparams, params)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1124, in _execute_clauseelement
ret = self._execute_context(
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
self._handle_dbapi_exception(
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1508, in _handle_dbapi_exception
util.raise_(newraise, with_traceback=exc_info[2], from_=e)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
raise exception
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1281, in _execute_context
self.dispatch.after_cursor_execute(
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/sqlalchemy/event/attr.py", line 322, in __call__
fn(*args, **kw)
File "/home/chris/Documents/programming/python/app/venv/lib/python3.8/site-packages/beeline/middleware/flask/__init__.py", line 113, in after_cursor_execute
query_duration = datetime.datetime.now() - self.query_start_time
AttributeError: '_thread._local' object has no attribute 'span'