2026 : Mac Mini loué 7×24 — matrice Celery (worker longue durée) versus éventail cron : concurrence, ACK, backoff et seuils disque
« Sur un Mac Mini Apple Silicon loué en 7×24, une file Celery partage le SSD APFS avec le courtier, les journaux et les artefacts : le bon réglage du broker, de la prélecture et des ACK évite les bulles de latence, tandis qu’un cron mal verrouillé multiplie les écritures concurrentes sur la même base. »
Public : workers Python asynchrones sur un Mini loué. Livrable : tableau seuils (URL file, prefetch, recyclage, limites, backoff), matrice cron/launchd, disque, FAQ. Liens : planification 7×24, FAQ APFS, cron watchdog, achat sans compte.
Trois freins quand les gabarits « cloud » heurtent un hôte unique
- Prélecture. worker_prefetch_multiplier élevé ⇒ tâches longues coincées sur un enfant, créneau retardé.
- Cron. Sans
flock/ jeton ⇒ doubles écritures base ou résultats. - ACK. Effets non idempotents + acquittement précoce ⇒ échecs invisibles après restart ou OOM.
Sur macOS, privilégiez launchd pour redémarrer proprement les workers après mise à jour système, gardez le courtier hors processus web quand c’est possible, et documentez le TMPDIR utilisé par les tâches qui écrivent de gros fichiers temporaires : un chemin sur volume saturé fait échouer des jobs autrement sains.
Tableau des URL de file et seuils Celery opérables
Celery 5 + Redis ou RabbitMQ ; caler sur cœurs réels. Les URL sont des formes, pas des secrets versionnés.
| Paramètre / URL | Exemple ou palier de départ | Note ACK / sûreté | Mini loué |
|---|---|---|---|
CELERY_BROKER_URL |
redis://…/0 ; amqp://…// ; WAN rediss:// |
vhost / index séparés ; rotation secrets | Volume dédié si broker local |
CELERY_RESULT_BACKEND |
redis://…/1, TTL court |
Base ≠ broker | Surveiller clés APFS |
broker_transport_options (visibilité / prélèvement) |
3×–6× la p99 | Court ⇒ dup ; long ⇒ blocage | ffmpeg/GPU : haut |
worker_prefetch_multiplier |
1 CPU long ; 2–4 micro I/O | acks_late + idempotence | Évite bulle disque |
task_acks_late + task_reject_on_worker_lost |
Si relançable | Baux / verrous | + recyclage |
worker_max_tasks_per_child |
200–2000 | froid vs RSS | nuit calme |
worker_max_memory_per_child |
60–70 % budget RAM (Ko) | anti-swap | si Redis local |
task_soft_time_limit / task_time_limit |
soft 90 % SLA ; hard +30–60 s | < visibilité | GPU |
| Backoff / retries | 2–5 s base, cap ~2 min, jitter 20 % | max 5 essais auto | voir planif |
Concurrence, accusés de réception et politique de retry
worker_concurrency ≈ cœurs physiques pour le CPU ; pools I/O seulement après profil réel sur votre Mini loué. Isoler les files bruyantes par tenant ou par route évite qu’une charge empoisonnée ne monopolise le disque et le broker partagés.
- Alerte si profondeur > 10× régime sur 2 polls.
- rate_limit + disjoncteur sur API externes.
- Reconnexion broker : backoff, pas de boucle serrée la nuit.
Checklist disque, inode et backend de résultats
TMP, result backend et journaux workers partagent le même APFS que sauvegardes et instantanés : au-delà d’une simple alerte « disque plein », définissez des garde-fous enqueue sur l’espace libre et les inodes avant d’accepter de nouveaux lots, comme vous le feriez pour une file distante saturée.
| Indicateur | Seuil indicatif | Action |
|---|---|---|
| Espace libre APFS | jaune ~20 % ; rouge ~10 % | pause enqueue, purge |
| Broker local (AOF / données) | ~2 Go marge broker local | quota / volume |
| Journaux worker / inode | logs ~200 Mo ; inode >80 % | rotate / archive |
Matrice : worker Celery résident versus éventail cron
Trancher selon durée médiane, tolérance au chevauchement et besoin de fairness entre files. Les workers offrent une consommation continue et des hooks de métriques homogènes ; le cron reste attractif lorsque chaque tranche est courte et que vous acceptez un peu plus de latence de démarrage à froid entre deux lancements.
| Profil | Worker Celery longue durée | Fan-out cron / launchd |
|---|---|---|
| Long (> min) | prefetch 1, acks_late, time limits | checkpoints |
| Micro-tranches | files dédiées, prefetch | launchd décalé |
| Sans overlap | singleton / locks | flock |
Six gestes pour une file 7×24 stable sur Mini loué
- p99 ⇒ visibilité + soft limit + 20 %.
- BROKER_URL hors git ; rotation à rebuild.
- acks_late, prefetch 1 jobs lourds, cap retries/file.
- max_tasks_per_child + RAM ; recycler nuit backup.
- Alertes disque, inode, TMPDIR, backend résultats.
- Test trimestriel : kill worker mid-task ⇒ redelivery OK.
FAQ
- Workers permanents ou éventail cron sur un Mac Mini loué ?
- Workers : fairness, retries, métriques, jobs longs. Cron : tranches courtes, isolation launchd, plus de churn.
- Le préfacteur un est-il toujours optimal ?
- Défaut CPU long = 1. Monter prefetch seulement avec acks_late + idempotence.
- Pourquoi recycler avec
worker_max_tasks_per_childsur macOS ? - Fuites natives / fds : recycler 200–2000 tâches évite reboot quotidien du loué.
Synthèse. Repères : prefetch 1 + acks_late sur CPU long ; max_tasks_per_child 200–2000 ; disque jaune ~20 % libre, rouge ~10 %. Louer un Mac Mini dédié clarifie files, ACK et marge SSD pour broker/logs. Accueil, tarifs, aide, achat sans compte.
Choisissez un nœud Mac pour Celery et cron 7×24
Mini Apple Silicon pour files Python et garde-fous disque. Accueil, tarifs, aide, achat sans compte, blog.
Mac Mini loué pour workers longue durée : achat, aide, blog.