Voici la documentation : https://geoplateforme.pages.gpf-tech.ign.fr/documentation

Skip to content
Extraits de code Groupes Projets

chore: refacto to split init and running state

Fusionnées Valentin VINCENT a demandé de fusionner chore/RefactoInitAndRunningState vers main
2 fichiers
+ 46
20
Comparer les modifications
  • Côte à côte
  • En ligne
Fichiers
2
@@ -158,31 +158,36 @@ class PublishAgent:
logger.error("Le service n'a pas démarré")
logger.info("Récupération de la configuration initiale")
if url_entrepot:
for offering in self.supply_service():
self.process_message(offering)
try:
if listening_mode:
logger.info("Agent en attente de messages")
self.start_consuming_received_offers()
# Don't recover connections closed by server
except ConnectionClosedByBroker as err:
logger.error(
f"La connexion a été fermée par le serveur RabbitMQ: {err}",
stack_info=True,
)
self.write_health_file(status_msg="KO")
except AMQPChannelError as err:
logger.error(f"Erreur de connexion : {err}", stack_info=True)
self.write_health_file(status_msg="KO")
# Skip the initial configuration init if only the agent has restarted.
if self.read_health_file() != "AGENT_KO":
if url_entrepot:
for offering in self.supply_service():
self.process_message(offering)
except Exception as err:
logger.error(f"Processing offers failed. Trace {err}", stack_info=True)
if self.channel:
self.channel.stop_consuming()
self.write_health_file(status_msg="KO")
exit(-1)
try:
if listening_mode:
logger.info("Agent en attente de messages")
self.start_consuming_received_offers()
# Don't recover connections closed by server
except ConnectionClosedByBroker as err:
logger.error(
f"La connexion a été fermée par le serveur RabbitMQ: {err}",
stack_info=True,
),
self.write_health_file(status_msg="AGENT_KO")
except AMQPChannelError as err:
logger.error(f"Erreur de connexion : {err}", stack_info=True)
self.write_health_file(status_msg="AGENT_KO"),
except Exception as err:
logger.error(f"Processing offers failed. Trace {err}", stack_info=True)
self.write_health_file(status_msg="AGENT_KO")
@property
def _api_http_headers(self) -> dict:
@@ -626,12 +631,30 @@ class PublishAgent:
with self.health_filepath.open(mode="w", encoding="UTF-8") as fh:
fh.write(status_msg)
logger.info(
f"Statut écrit dans le fichier de santé de l'agent : {self.health_filepath}"
f"Statut écrit dans le fichier de santé de l'agent {status_msg} : {self.health_filepath}"
)
return self.health_filepath
else:
return None
def read_health_file(self) -> str:
"""Lis le message de statut dans le fichier de santé de l'agent. Seulement si
le fichier de santé (défini à l'initialisation de l'objet via le paramètre
health_filepath) existe.
Returns:
str: statut du fichier
"""
try:
if isinstance(self.health_filepath, Path):
status = self.health_filepath.read_text()
return status
else:
return ""
except (Exception,):
logger.info("no file status found, when we try to read it")
return ""
def write_response(self, offering: dict, status: Status) -> dict:
"""Cette fonction rédige un message une fois que les opérations de publication
ont été effectuées.
Chargement en cours