INFRASTRUCTURĂ PRIVATĂ / NU ESTE NECESAR IDCitiți doctrina de confidențialitate
Notele de teren KoalaVPS

Faceți dintr-un agent un serviciu, nu un terminal uitat.

Rulați lucrători de lungă durată cu stare explicită, permisiuni limitate și un plan de recuperare.

Împachetați workerul

Folosiți un runtime acceptat, dependențe fixate și un manager de servicii sau un container. Configurați limite de repornire și un utilizator de serviciu dedicat. Păstrați acreditările private ale furnizorului în configurația protejată, în afara fișierelor publice ale aplicației.

Salvează progresul înainte ca acțiunile să conteze

Folosiți o coadă durabilă sau o bază de date pentru sarcini. Atribuiți un identificator unic de operațiune, înregistrați cererile externe și reconciliați rezultatele incerte. O repornire nu ar trebui să trimită un al doilea e-mail, să creeze o a doua comandă sau să taxeze de două ori.

Adăugați observabilitate utilă

Monitorizați finalizarea sarcinilor, vechimea cozii, rata erorilor și costul, în loc să verificați doar dacă există un proces. Păstrați jurnalele suficient de mici pentru a fi revizuite și redactați tokenurile, prompturile și documentele care nu trebuie păstrate.

Stabiliți un plafon clar

Limitați cheltuielile cu modelul, concurența browserului, durata de rulare și numărul de reîncercări. Păstrați un comutator ușor de pauză și o cale de revizuire umană pentru acțiunile cu consecințe. Un worker mai mic și bine observat este mai ușor de încredere decât unul nerestricționat.

Utilizați un supervisor și un program deliberat

Systemd și Docker sunt modalități comune de a face un proces să supraviețuiască deconectării terminalului. Pentru un serviciu systemd, Type=exec poate raporta eșecul de execuție mai direct decât o simplă lansare în fundal, iar Restart=on-failure poate reporni eșecurile cu o politică limitată. Sarcinile programate ar trebui să evite rulările suprapuse. Păstrați explicit directorul de lucru, utilizatorul serviciului și mediul. Exemplul presupune că utilizatorul koala-agent, mediul virtual, modulul worker și fișierul privat de mediu există deja; adaptează-le înainte de a instala o unitate.

  • Folosiți un cont de serviciu dedicat
  • Setați o întârziere de repornire și un plafon de eșecuri
  • Verificați starea anterioară a jobului înainte de a porni o rulare programată
[Unit]
Description=Example agent worker
After=network-online.target

[Service]
Type=exec
User=koala-agent
WorkingDirectory=/opt/koala-agent
EnvironmentFile=/etc/koala-agent.env
ExecStart=/opt/koala-agent/.venv/bin/python -m worker
Restart=on-failure
RestartSec=10
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Setați un buget zilnic și o limită de duplicare

Stabilește pentru worker un număr maxim de cereri, o limită de cheltuieli și un timeout de execuție. Folosește o înregistrare durabilă de idempotență pentru acțiunile care afectează lumea exterioară. Un clic reușit în browser poate avea loc înainte ca procesul să primească un răspuns; inspectează starea externă înainte de a încerca din nou. Montările de secrete din Docker Compose pot ține un secret în afara imaginii, dar permisiunile și aplicația consumatoare necesită încă o revizuire.

Acordați unui job periodic o politică explicită de recuperare

Utilizați un serviciu de lungă durată pentru un lucrător de coadă persistent și un serviciu oneshot declanșat de temporizator pentru o sarcină programată delimitată. Cu un temporizator calendaristic systemd, Persistent=true poate declanșa o singură activare ratată după o perioadă de nefuncționare; nu recreează un întreg restanțier de activitate. Decideți dacă această recuperare este dorită. RandomizedDelaySec poate distribui pornirile, în timp ce un lease la nivel de aplicație împiedică două replici să proceseze aceeași activitate programată.

  • Înregistrați fusul orar dorit și inspectați următoarele ore de rulare înainte de a activa programarea.
  • Mențineți termenul de execuție al sarcinii mai scurt decât un interval care nu trebuie să se suprapună sau utilizați o închiriere durabilă cu expirare și proprietate.
  • Faceți ca sarcina să selecteze lucrările restante din starea stocată, în loc să presupună că fiecare eveniment de timer anterior a rulat.
  • Verificați versiunea systemd instalată înainte de a folosi o directivă din cel mai recent manual.
# Read-only checks after creating your own matching units.
systemctl list-timers --all
systemctl status koala-agent.service
journalctl -u koala-agent.service --since today --no-pager

Diferențiază o buclă de crash de un worker blocat

O politică de repornire poate recupera un proces eșuat, dar repetarea unei acreditări invalide sau a unei migrări defectuoase la fiecare câteva secunde face o defecțiune mai zgomotoasă. Limitați pornirile serviciului și alertați la eșecuri repetate. Un proces activ poate fi și blocat: măsurați vechimea celei mai vechi sarcini și a ultimei operațiuni finalizate. Testați o cădere API, un disc plin și o oprire a procesului cu sarcini de unică folosință, apoi verificați că starea durabilă previne acțiunile externe duplicate.

  • Setați în aplicație un buget pentru furnizor și un timeout pentru cereri, precum și o limită CPU/memorie la nivelul runtime-ului.
  • Containerele Docker nu au o limită de memorie utilă specifică sarcinii doar pentru că sunt containere; configurați și testați limitele în mod deliberat.
  • Stocați un secret în afara imaginii și a arborelui public, apoi testați că jurnalele de erori și diagnosticele îl ascund.
  • Păstrați o rută de oprire manuală și solicitați o revizuire adecvată pentru cheltuieli, scrieri în producție sau mesaje externe.
CONFIGURAȚI-VĂ INFRASTRUCTURA

Preia controlul.
Implementează în condițiile tale.

Fără documente de identitate. Acces complet de administrator. Facturare nativ cripto.