'Errno 104 Connection reset by peer and Errno 32 Broken pipe Flask WebAPP
I am completely new to Flask Web development, I build this website https://justfortrial.com using flask framework, it works great in my local machine, but when i uploaded it to the server, it started throwing this error of (Operational Error: [Errno 104] Connection reset by peer / [Errno 32] Broken pipe). i thought this might be happening because (MYSQLDB Client) dependency could not get installed on the server when i was using (SQLALCHEMY_DATABASE_URI = mysql://username:password@server/db) so i switched to PYMYSQL and used (SQLALCHEMY_DATABASE_URI = mysql+pymysql://username:password@server/db) The PYMYSQL dependency get installed on the sever and website works, but only if i switch between the pages slowly like 5-10 seconds gap, if i do it little quicker or switch between the categories on Products Page then it throws the error.
I talked to the hosting provider they said that there too many SQL connection created and goes to SLEEP MODE, so when the new request comes in it throws the said error above.
In the Traceback it shows (Background on this error at: https://sqlalche.me/e/14/e3q8) i checked the link and it recommends (Dealing with Disconnect) on this link https://docs.sqlalchemy.org/en/14/core/pooling.html#pool-disconnects which i don't understand how to implement it in FLASK Framework.
So Please check the Website and click on Products Link, if it works then please click it again or switch between the pages, i am sure it will through and error of INTERNAL SERVER ERROR 500. This means it has thrown either (Operational Error: [Errno 104] Connection reset by peer) or (Operational Error: [Errno 32] Broken pipe)
Please help, what i supposed to do to handle this error.
[2022-04-11 09:12:24,257] ERROR in app: Exception on /products [GET]
Traceback (most recent call last):
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 756, in _write_bytes
self._sock.sendall(data)
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 547, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 814, in _execute_command
self._write_bytes(packet)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 759, in _write_bytes
raise err.OperationalError(
pymysql.err.OperationalError: (2006, "MySQL server has gone away (ConnectionResetError(104,
'Connection reset by peer'))")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 2073, in wsgi_app
response = self.full_dispatch_request()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 1518, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 1516, in full_dispatch_request
rv = self.dispatch_request()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 1502, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/home/justflp4/FlaskTrial/Flask_Website/views.py", line 23, in products_page
product_categories = Productcategory.query.all()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/orm/query.py", line 2759, in all
return self._iter().all()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/orm/query.py", line 2894, in _iter
result = self.session.execute(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/orm/session.py", line 1692, in execute
result = conn._execute_20(statement, params or {}, execution_options)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
ret = self._execute_context(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
self._handle_dbapi_exception(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
util.raise_(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 547, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 814, in _execute_command
self._write_bytes(packet)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 759, in _write_bytes
raise err.OperationalError(
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2006, "MySQL server has gone
away (ConnectionResetError(104, 'Connection reset by peer'))")
[SQL: SELECT productcategory.`catId` AS `productcategory_catId`, productcategory.`catName` AS
`productcategory_catName`
FROM productcategory]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
[2022-04-11 09:13:40,489] ERROR in app: Exception on /products [GET]
Traceback (most recent call last):
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 756, in _write_bytes
self._sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 547, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 814, in _execute_command
self._write_bytes(packet)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 759, in _write_bytes
raise err.OperationalError(
pymysql.err.OperationalError: (2006, "MySQL server has gone away (BrokenPipeError(32, 'Broken
pipe'))")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 2073, in wsgi_app
response = self.full_dispatch_request()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 1518, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 1516, in full_dispatch_request
rv = self.dispatch_request()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-packages/flask/app.py",
line 1502, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/home/justflp4/FlaskTrial/Flask_Website/views.py", line 23, in products_page
product_categories = Productcategory.query.all()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/orm/query.py", line 2759, in all
return self._iter().all()
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/orm/query.py", line 2894, in _iter
result = self.session.execute(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/orm/session.py", line 1692, in execute
result = conn._execute_20(statement, params or {}, execution_options)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
ret = self._execute_context(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
self._handle_dbapi_exception(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
util.raise_(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 148, in execute
result = self._query(query)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/cursors.py", line 310, in _query
conn.query(q)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 547, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 814, in _execute_command
self._write_bytes(packet)
File "/home/justflp4/virtualenv/FlaskTrial/3.8/lib/python3.8/site-
packages/pymysql/connections.py", line 759, in _write_bytes
raise err.OperationalError(
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2006, "MySQL server has gone
away (BrokenPipeError(32, 'Broken pipe'))")
[SQL: SELECT productcategory.`catId` AS `productcategory_catId`, productcategory.`catName` AS
`productcategory_catName`
FROM productcategory]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
