'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