Déplacement d'opérations récurrentes hors du callback

This commit is contained in:
Colin Maudry
2025-06-16 22:15:51 +02:00
parent 9f74aaea69
commit 68b3072aa3
2 changed files with 15 additions and 15 deletions
+2 -10
View File
@@ -8,20 +8,18 @@ from dotenv import load_dotenv
from src.utils import (
add_annuaire_link,
booleans_to_strings,
df,
format_number,
lf,
logger,
numbers_to_strings,
split_filter_part,
)
load_dotenv()
schema = df.schema
schema = lf.collect_schema()
update_date = os.path.getmtime(os.getenv("DATA_FILE_PARQUET_PATH"))
update_date = datetime.fromtimestamp(update_date).strftime("%d/%m/%Y")
df_filtered = pl.DataFrame()
lf: pl.LazyFrame = df.lazy()
# Suppression des colonnes inutiles
lf = lf.drop(
@@ -183,12 +181,6 @@ def update_table(page_current, page_size, filter_query, data_timestamp):
# elif operator == 'datestartswith':
# lff = lff.filter(pl.col(col_name).str.startswith(filter_value)")
# Remplacement des valeurs numériques par des chaînes de caractères
lff = numbers_to_strings(lff)
# Tri des marchés par date de notification
lff = lff.sort(by=["datePublicationDonnees"], descending=True, nulls_last=True)
dff: pl.DataFrame = lff.collect()
df_filtered = dff.clone()
+13 -5
View File
@@ -86,7 +86,7 @@ def format_number(number) -> str:
return number
def get_decp_data() -> pl.DataFrame:
def get_decp_data() -> pl.LazyFrame:
# Chargement du fichier parquet
# Le fichier est chargé en mémoire, ce qui est plus rapide qu'une base de données pour le moment.
# On utilise polars pour la rapidité et la facilité de manipulation des données.
@@ -95,13 +95,21 @@ def get_decp_data() -> pl.DataFrame:
logger.info(
f"Lecture du fichier parquet ({os.getenv('DATA_FILE_PARQUET_PATH')})..."
)
ddf: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
df: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
except ComputeError:
# Le fichier est probablement en cours de mise à jour
logger.info("Échec, nouvelle tentative dans 10s...")
sleep(10)
ddf: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
return ddf
df: pl.DataFrame = pl.read_parquet(os.getenv("DATA_FILE_PARQUET_PATH"))
lff: pl.LazyFrame = df.lazy()
# Remplacement des valeurs numériques par des chaînes de caractères
lff = numbers_to_strings(lff)
# Tri des marchés par date de notification
lff = lff.sort(by=["datePublicationDonnees"], descending=True, nulls_last=True)
return lff
df = get_decp_data()
lf = get_decp_data()