Skip to content

Getting Lost connection to MySQL server during query after few hours... #1014

@rmControls

Description

@rmControls

Hello,

I am not sure this error belongs to Python-socktio or SqlAlchemy or I am doing something wrong....

my socket app works perfectly when you start... after couple of hours... I am getting "Lost connection to MySQL server during query"

I am not using any web framework just using python-socketio and sqlalchemy...

can you please suggest what can be wrong here...?

my db file

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, scoped_session
from os import environ

# SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
user_name = environ.get('DATABASE_USER', 'root')
password = environ.get('DATABASE_PASSWORD', '')
host = environ.get('DATABASE_HOST', 'localhost')
database_name = environ.get('DATABASE_NAME', 'db')
server_type = "mysql+pymysql"

SQLALCHEMY_DATABASE_URL = f"{server_type}://{user_name}:{password}@{host}/{database_name}"


engine = create_engine(SQLALCHEMY_DATABASE_URL, ) 

SessionLocal = scoped_session(
    sessionmaker(
        autocommit=False,
        autoflush=False,
        bind=engine
    )
)

Base = declarative_base()

# Session class for DB connection, connect when instance is created
Base.query = SessionLocal.query_property()

socket io file

import socketio
from os import environ

async_mode = environ.get('ASYNC_MODE', 'asgi')


def build_rmq_mgr():
    rmq_user = environ.get('RABBIT_MQ_USER')
    rmq_password = environ.get('RABBIT_MQ_PASSWORD')
    mgr = socketio.AsyncAioPikaManager(f'amqp://{rmq_user}:{rmq_password}@localhost:5672//')
    return mgr


sio = socketio.AsyncServer(logger=True, async_mode=async_mode, client_manager=build_rmq_mgr())


main file

```python
import uvicorn
from dotenv import load_dotenv
from os import environ
from config import config_dict

load_dotenv(".env", verbose=True)

get_config_mode = environ.get('CONFIG_MODE', 'Debug')

try:
    config_mode = config_dict[get_config_mode.capitalize()]
except KeyError:
    exit('Error: Invalid CONFIG_MODE environment variable entry.')

from app import create_app
app = create_app(config_mode)

if __name__ == '__main__':
    uvicorn.run(app, host='0.0.0.0', port=5000)

create app file

from logging import basicConfig, DEBUG, getLogger, StreamHandler
from os import environ

from socket_io import sio
import socketio

def configure_logs(app):
    basicConfig(filename='error.log', level=DEBUG)
    logger = getLogger()
    logger.addHandler(StreamHandler())


def register_events():
    from app.events import AllEvents
    sio.register_namespace(AllEvents('/events'))



def create_app(config):
    app = socketio.ASGIApp(sio, static_files={
        '/': 'app/client/templates/index.html',
        '/chat': 'app/client/templates/chat.html',
        '/static': 'app/client/templates',
    })
    register_events()
    return app

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions