Puncte:0

Cum să porniți un proces de fundal când serverul pornește și să îl mențineți în viață

drapel cn

Notă: nu eram sigur dacă ar trebui să întreb asta aici, să depășesc stiva sau ???

Migrez o aplicație Ruby on Rails de la Heroku la AWS. Arhitectura serverului este destul de vanilie:

  • Bază de date
  • Server Web
  • Worker Server

Baza de date și serverul web au fost migrate cu succes la AWS. Worker Server este pe punte.

FWIW: Serverul web aws rulează Ubuntu 20.x cu Passenger / nginx ca server http.

Acum lucrez la migrarea Worker, care este implementat cu exact același cod ca și serverul web. Singura diferență este că Worker nu este accesibil public și folosește Ruby Gem job_întârziat pentru a procesa cererile de fundal.

Worker Server

  • Serverul de lucru a fost creat dintr-un ami bazat pe serverul web.
  • S-a eliminat configurația serverului nginx care era un artefact de pe serverul web.

Întrebări

  1. Cum configurez serverul Worker să pornească automat și să înceapă să ruleze lucrările de fundal când serverul pornește?

  2. Cum pot menține procesul lucrătorului în viață dacă se întâmplă să apară o defecțiune și să se oprească?

În Heroku, linia de comandă care pornește serverul lucrător:

bundle exec rake jobs:work

După ce am pornit serverul Worker, pot rula comanda de mai sus și procesul de lucru funcționează excelent. Trebuie doar să vă dați seama cum să rulați procesul de lucru în mod non-interactiv.

FYI: Vin dintr-un fundal Windows/.NET. Mediul Linux / Ruby / Rails este încă destul de nou pentru mine.

user535733 avatar
drapel cn
Căutați o instrucțiune despre serviciile systemd.
drapel in
Această întrebare [are un răspuns pe StackOverflow](https://stackoverflow.com/a/39720001/14952832)
drapel cn
@matigo - Am trecut prin întrebarea la care ați făcut referire; precum și alte vreo 50 de pe SO. Întrebarea/răspunsul la care ați conectat poate funcționa, dar nu pare a fi o soluție pe termen lung dacă procesul eșuează. De fapt, am petrecut aproximativ o zi cercetând acest lucru și nu am găsit un răspuns canonic bun. Mă uit la serviciile systemd și asta pare o cale bună la prima vedere.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.