Working on making things more reliable... WS and DB connections
This commit is contained in:
@@ -16,8 +16,16 @@ db_uri = settings.SQLALCHEMY_DB_URI
|
|||||||
# log.setLevel(logging.INFO)
|
# log.setLevel(logging.INFO)
|
||||||
|
|
||||||
connection_string = db_uri
|
connection_string = db_uri
|
||||||
engine = create_engine(url=connection_string, poolclass=NullPool, echo=False, isolation_level='READ COMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
# engine = create_engine(url=connection_string, poolclass=NullPool, echo=False, isolation_level='READ COMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']}) # 2024-10-08
|
||||||
# engine = create_engine(url=connection_string, pool_size=5, max_overflow=15, pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
engine = create_engine(
|
||||||
|
url=connection_string,
|
||||||
|
echo=False,
|
||||||
|
pool_use_lifo=True,
|
||||||
|
pool_pre_ping=True,
|
||||||
|
isolation_level='READ COMMITTED',
|
||||||
|
connect_args={'connect_timeout': settings.DB['connect_timeout']}
|
||||||
|
)
|
||||||
|
# engine = create_engine(url=connection_string, pool_size=5, max_overflow=15, timeout=settings.DB['connect_timeout'], pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
||||||
# NOTE: The default isolation_level is 'REPEATABLE READ'. This can sometimes not show updated data.
|
# NOTE: The default isolation_level is 'REPEATABLE READ'. This can sometimes not show updated data.
|
||||||
# NOTE: The "echo" set to True option shows the SQL queries.
|
# NOTE: The "echo" set to True option shows the SQL queries.
|
||||||
# NOTE: Switching from READ COMMITTED to READ UNCOMMITTED (or REPEATABLE READ). Testing started 2024-04-23
|
# NOTE: Switching from READ COMMITTED to READ UNCOMMITTED (or REPEATABLE READ). Testing started 2024-04-23
|
||||||
@@ -64,7 +72,16 @@ def sql_connect(
|
|||||||
settings.SQLALCHEMY_DB_URI = 'mysql://'+DB['username']+':'+DB['password']+'@'+DB['server']+'/'+DB['name']
|
settings.SQLALCHEMY_DB_URI = 'mysql://'+DB['username']+':'+DB['password']+'@'+DB['server']+'/'+DB['name']
|
||||||
log.debug(settings.DB)
|
log.debug(settings.DB)
|
||||||
|
|
||||||
new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, poolclass=NullPool, echo=False, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
# new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, poolclass=NullPool, echo=False, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
||||||
|
new_engine = create_engine(
|
||||||
|
url=settings.SQLALCHEMY_DB_URI,
|
||||||
|
echo=False,
|
||||||
|
pool_use_lifo=True,
|
||||||
|
pool_pre_ping=True,
|
||||||
|
isolation_level='READ COMMITTED',
|
||||||
|
connect_args={'connect_timeout': settings.DB['connect_timeout']}
|
||||||
|
)
|
||||||
|
# new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, pool_size=5, max_overflow=15, timeout=settings.DB['connect_timeout'], pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
||||||
# new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, pool_size=5, max_overflow=15, pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
# new_engine = create_engine(url=settings.SQLALCHEMY_DB_URI, pool_size=5, max_overflow=15, pool_recycle=settings.DB['pool_recycle'], pool_pre_ping=True, echo=False, echo_pool=True, isolation_level='READ UNCOMMITTED', connect_args={'connect_timeout': settings.DB['connect_timeout']})
|
||||||
|
|
||||||
current_db.engine = new_engine
|
current_db.engine = new_engine
|
||||||
@@ -1324,7 +1341,7 @@ def redis_lookup_id_random(
|
|||||||
record_id = None
|
record_id = None
|
||||||
|
|
||||||
if record_id:
|
if record_id:
|
||||||
r.setex(key_name, datetime.timedelta(minutes=1), value=record_id)
|
r.setex(key_name, datetime.timedelta(minutes=minutes), value=record_id)
|
||||||
log.info(f'Redis: Entry found for: Key="{key_name}" value="{record_id}" TTL={r.ttl(key_name)} seconds')
|
log.info(f'Redis: Entry found for: Key="{key_name}" value="{record_id}" TTL={r.ttl(key_name)} seconds')
|
||||||
|
|
||||||
return int(record_id)
|
return int(record_id)
|
||||||
|
|||||||
@@ -104,7 +104,8 @@ async def redis_connector(
|
|||||||
|
|
||||||
# WARNING: If the timeout is not defined in the function call to something greater than 0 (the default if not set?) or None, the get_message() method will cause high CPU usage and or just not work. Or at least that specific thread will just hang. This is because the timeout is set to 0. This is not the same as None.
|
# WARNING: If the timeout is not defined in the function call to something greater than 0 (the default if not set?) or None, the get_message() method will cause high CPU usage and or just not work. Or at least that specific thread will just hang. This is because the timeout is set to 0. This is not the same as None.
|
||||||
# The get_message() method is a blocking method (timeout=None) that waits for a message to be published to the channel. This seems to be a good solution for now. The other option is to set a timeout of something like 1 second or .01 seconds to do other things (like send a heartbeat after each timeout).
|
# The get_message() method is a blocking method (timeout=None) that waits for a message to be published to the channel. This seems to be a good solution for now. The other option is to set a timeout of something like 1 second or .01 seconds to do other things (like send a heartbeat after each timeout).
|
||||||
message = await r_channel.get_message(ignore_subscribe_messages=True, timeout=None) # Timeout should be None. Other options are something like: 1 second, .1 seconds, or .01 seconds
|
# message = await r_channel.get_message(ignore_subscribe_messages=True, timeout=None) # Timeout should be None. Other options are something like: 1 second, .1 seconds, or .01 seconds
|
||||||
|
message = await r_channel.get_message(ignore_subscribe_messages=True, timeout=.1) # Timeout should be None. Other options are something like: 1 second, .1 seconds, or .01 seconds
|
||||||
log.debug(f'(Redis Reader) Message received or timeout reached: {message}')
|
log.debug(f'(Redis Reader) Message received or timeout reached: {message}')
|
||||||
if message is not None:
|
if message is not None:
|
||||||
log.debug(f'(Redis Reader) Message Received: {message}')
|
log.debug(f'(Redis Reader) Message Received: {message}')
|
||||||
|
|||||||
Reference in New Issue
Block a user