dict cursor e pool conn

This commit is contained in:
2025-07-06 23:27:13 +02:00
parent 301aa53c72
commit 0022d0e326
6 changed files with 66 additions and 69 deletions

View File

@@ -48,8 +48,9 @@ async def worker(worker_id: int, cfg: object, pool) -> None:
if record:
id, unit_type, tool_type, unit_name, tool_name = [x.lower().replace(" ", "_") if isinstance(x, str) else x for x in record]
matlab_info = await get_matlab_command(cfg, tool_name, unit_name)
matlab_cmd = f"timeout {cfg.timeout} ./run_{matlab_info['matcall']}.sh {cfg.matlab_runtime} {unit_name} {tool_name}"
matlab_info = await get_matlab_command(cfg, tool_name, unit_name, pool)
if matlab_info:
matlab_cmd = f"timeout {cfg.matlab_timeout} ./run_{matlab_info['matcall']}.sh {cfg.matlab_runtime} {unit_name} {tool_name}"
# matlab_error_filename = f'{cfg.matlab_error_path}{unit_name}{tool_name}_output_error.txt'
@@ -63,7 +64,7 @@ async def worker(worker_id: int, cfg: object, pool) -> None:
logger.error("Errore durante l'elaborazione")
await asyncio.sleep(ELAB_PROCESSING_DELAY)
else:
logger.debug("Nessun record disponibile")
logger.info("Nessun record disponibile")
await asyncio.sleep(NO_RECORD_SLEEP)
except Exception as e:

10
env/elab.ini vendored
View File

@@ -1,14 +1,14 @@
[logging]
logFilename = ./load_raw_data.log
logFilename = ./elab_data.log
[threads]
max_num = 20
max_num = 10
[matlab]
runtime = "/usr/local/MATLAB/MATLAB_Runtime/v93"
func_path = "/usr/local/matlab_func/"
runtime = /usr/local/MATLAB/MATLAB_Runtime/v93
func_path = /usr/local/matlab_func/
timeout = 1800
error = ""
error_path = "/tmp/"
error_path = /tmp/

View File

@@ -50,7 +50,7 @@ async def worker(worker_id: int, cfg: object, pool) -> None:
logger.error("Errore durante l'elaborazione")
await asyncio.sleep(CSV_PROCESSING_DELAY)
else:
logger.debug("Nessun record disponibile")
logger.info("Nessun record disponibile")
await asyncio.sleep(NO_RECORD_SLEEP)
except Exception as e:

View File

@@ -3,7 +3,7 @@ import mysql.connector
logger = logging.getLogger(__name__)
def connetti_db(cfg: object) -> object:
def nnn_connetti_db(cfg: object) -> object:
"""
Establishes a connection to a MySQL database.

View File

@@ -1,24 +1,21 @@
from utils.database.connection import connetti_db
import logging
import aiomysql
logger = logging.getLogger(__name__)
def get_matlab_command(cfg: object, tool: str, unit: str) -> tuple:
async def get_matlab_command(cfg: object, tool: str, unit: str, pool) -> tuple:
with connetti_db(cfg) as conn:
cur = conn.cursor(dictionary=True)
query = f"""
async with pool.acquire() as conn:
async with conn.cursor(aiomysql.DictCursor) as cur:
await cur.execute(f"""
SELECT m.matcall, t.ftp_send , t.unit_id, s.`desc` as statustools, t.api_send, u.inoltro_api, u.inoltro_api_url, u.inoltro_api_bearer_token, IFNULL(u.duedate, "") as duedate from matfuncs as m
INNER JOIN tools as t on t.matfunc = m.id
INNER JOIN units as u on u.id = t.unit_id
INNER JOIN statustools as s on t.statustool_id = s.id
where t.name = '{tool}' AND u.name = '{unit}';
""")
"""
cur.execute(query)
result = cur.fetchone()
cur.close()
conn.close()
result = await cur.fetchone()
if not result:
logger.error(f"{unit} - {tool}: Matlab command not found.")

View File

@@ -1,13 +1,14 @@
from utils.database.connection import connetti_db
import aiomysql
import logging
logger = logging.getLogger(__name__)
def get_nodes_type(cfg: object, tool: str, unit: str) -> tuple:
async def get_nodes_type(cfg: object, tool: str, unit: str, pool) -> tuple:
with connetti_db(cfg) as conn:
cur = conn.cursor(dictionary=True)
query = f"""
async with pool.acquire() as conn:
async with conn.cursor(aiomysql.DictCursor) as cur:
await cur.execute(f"""
SELECT t.name AS name, n.seq AS seq, n.num AS num, n.channels AS channels, y.type AS type, n.ain AS ain, n.din AS din
FROM {cfg.dbname}.{cfg.dbnodes} AS n
INNER JOIN tools AS t ON t.id = n.tool_id
@@ -15,13 +16,10 @@ def get_nodes_type(cfg: object, tool: str, unit: str) -> tuple:
INNER JOIN nodetypes AS y ON n.nodetype_id = y.id
WHERE y.type NOT IN ('Anchor Link', 'None') AND t.name = '{tool}' AND u.name = '{unit}'
ORDER BY n.num;
"""
#logger.info(f"{unit} - {tool}: Executing query: {query}")
cur.execute(query)
results = cur.fetchall()
""")
results = await cur.fetchall()
logger.info(f"{unit} - {tool}: {cur.rowcount} rows selected to get node type/Ain/Din/channels.")
cur.close()
conn.close()
if not results:
logger.info(f"{unit} - {tool}: Node/Channels/Ain/Din not defined.")
@@ -35,3 +33,4 @@ def get_nodes_type(cfg: object, tool: str, unit: str) -> tuple:
dins.append(row['din'])
return channels, types, ains, dins