Ajout système de priorisation de synchro : grist_priority_bals.\n modif systemd
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
Outils de migration vers la DINUM.
|
# Office 365 to Dimail
|
||||||
|
|
||||||
|
|
||||||
|
# ImapSync
|
||||||
|
## cache :
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Use_cache.txt
|
||||||
|
|
||||||
|
|
||||||
cp imapsync_daemon.py /root/migration/
|
cp imapsync_daemon.py /root/migration/
|
||||||
cp .env.example /root/migration/.env
|
cp .env.example /root/migration/.env
|
||||||
|
|||||||
@@ -436,6 +436,40 @@ def grist_fetch_bals() -> list[dict]:
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def grist_priority_bals() -> dict:
|
||||||
|
"""
|
||||||
|
Retourne les BAL où Synchronisation = True.
|
||||||
|
Trié par 'Date_derniere_passe' (le plus vieux en premier).
|
||||||
|
Exclut les BAL dont la dernière passe a eu lieu il y a moins de MIN_INTERVAL_MINUTES.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 1. Récupération triée via l'API Grist
|
||||||
|
params = {"limit": 1, "filter": {"priority": [True], COL_SYNC: [True]}}
|
||||||
|
resp = requests.get(
|
||||||
|
grist_url(TABLE_BALS), headers=GRIST_HEADERS, params=params, timeout=15
|
||||||
|
)
|
||||||
|
resp.raise_for_status()
|
||||||
|
records = resp.json().get("records", [])
|
||||||
|
|
||||||
|
# for r in records:
|
||||||
|
r = records[0]
|
||||||
|
fields = r["fields"]
|
||||||
|
|
||||||
|
# Vérification de la condition de synchronisation globale
|
||||||
|
if fields.get(COL_SYNC) is not True:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
# Si le timestamp existe, on valide l'écart de temps
|
||||||
|
if fields.get("Date_derniere_passe") is not None:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
except requests.RequestException as e:
|
||||||
|
log.error(f"Erreur lecture Grist BALS : {e}")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def grist_add_historique(
|
def grist_add_historique(
|
||||||
email: str,
|
email: str,
|
||||||
status: str,
|
status: str,
|
||||||
@@ -754,6 +788,14 @@ def main():
|
|||||||
futures[f] = email
|
futures[f] = email
|
||||||
log.info(f"[{email}] Job soumis au pool")
|
log.info(f"[{email}] Job soumis au pool")
|
||||||
|
|
||||||
|
# Ajout de la BAL prioritaire
|
||||||
|
row = grist_priority_bals()
|
||||||
|
email = row.get(COL_EMAIL, "").strip()
|
||||||
|
if email not in _running and email != "":
|
||||||
|
f = pool.submit(run_sync_job, row, dry)
|
||||||
|
futures[f] = email
|
||||||
|
log.info(f"[{email}] Job soumis au pool")
|
||||||
|
|
||||||
if not _shutdown:
|
if not _shutdown:
|
||||||
time.sleep(POLL_INTERVAL)
|
time.sleep(POLL_INTERVAL)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Montage du système de fichiers imapsync_cache
|
Description=Mount imapsync_cache fs https://imapsync.lamiral.info/FAQ.d/FAQ.Use_cache.txt
|
||||||
Before=imapsync.service
|
Before=imapsync.service
|
||||||
|
|
||||||
[Mount]
|
[Mount]
|
||||||
|
|||||||
@@ -1,24 +1,20 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Mon script Python avec montage requis
|
Description=Imap sync Daemon
|
||||||
After=network.target home-migration-migration\x2ddinum-imapsync_cache.mount
|
After=network.target home-migration-migration\x2ddinum-imapsync_cache.mount
|
||||||
Requires=home-migration-migration\x2ddinum-imapsync_cache.mount
|
Requires=home-migration-migration\x2ddinum-imapsync_cache.mount
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
# L'utilisateur et le groupe qui exécuteront le script
|
|
||||||
User=migration
|
User=migration
|
||||||
Group=migration
|
Group=migration
|
||||||
|
|
||||||
# Changement de répertoire (Equivalent d'un 'cd')
|
|
||||||
WorkingDirectory=/home/migration/migration-dinum/
|
WorkingDirectory=/home/migration/migration-dinum/
|
||||||
|
|
||||||
# L'environnement (optionnel, utile pour le buffer Python)
|
#disable log buffering
|
||||||
Environment=PYTHONUNBUFFERED=1
|
Environment=PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
# Commande à lancer (Utilisez TOUJOURS les chemins absolus)
|
|
||||||
ExecStart=/usr/bin/python3 /home/migration/migration-dinum/imapsync_daemon.py
|
ExecStart=/usr/bin/python3 /home/migration/migration-dinum/imapsync_daemon.py
|
||||||
|
|
||||||
# Comportement en cas de crash
|
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user