Sida Loo Socodsiiyo Background Jobs ee Web App: Queues, Schedulers iyo Cron
Si aad background jobs ugu socodsiiso web app, marka hore kala qaybi shaqada laba nooc. Jobs-ka la kicinayo (diri emayl soo dhoweyn, habee upload) waxa la kaydin karaa job queue, badanaa miis ku jira database-kaaga, oo worker-ku wuu maamulaa isagoo dib u isku dayaya. Jobs-ka jadwalka leh (warbixin habeenkii, xusuusin kasta 15 daqiiqo) waxay u baahan yihiin wax wakhti go'an ku shaqeeya: feature-ka cron ee martigeliyaha, ama scheduler dibadda oo wicinaya endpoint ilaaliyo oo app-kaaga ku jira. Had iyo jeer ka dhig jobs-ka kuwo ammaan ku ah in laba jeer la socodsiiyo, khaladaadka diiwaan geli, oo ha ku tiirsanaan timer gudaha server-ka oo seexan ama dib u bilaabmi kara.
Hagahan wuxuu sharraxayaa doorashooyinka, goorta mid kasta ku habboon, iyo sida loo dejiyo adigoo isticmaalaya AI app builder, oo ay ku jiraan martigeliyeyaasha u dhowaysa eber.
Waxa loo tirin karo background job
Wax kasta oo gaabis ah, aan la isku halayn karin, ama aan loo baahnayn jawaabta degdegga ah ee isticmaaluhu:
- Diritaanka emaylada, ogeysiisyada iyo rasiidhyada
- Cabbirka sawirrada, transcoding-ka fiidiyowga, samaynta PDF-yada
- Wicitaanka API-yada saddexaad ee gaabis ah, oo ay ku jiraan model-yada AI ee shaqooyinka dheer
- Soo dejinta ama isku-qabsiga xogta nidaam kale
- Nadiifinta habeenkii, warbixinnada iyo xusuusinta
Tani marka lagu sameeyo gudaha codsiga, bogagga way gaabiyaan oo way jabaan: haddii bixiyaha emaylka uu hoos yahay, diiwaangelinta isticmaaluhu way fashilantaa. Background-ka u wareejinta waxay keenaysaa in isticmaaluhu jawaab degdeg ah helo, shaqadana la isku dayi karo.
Doorashooyinka
| Doorashada | Sida ay u shaqeyso | Faa'iidooyinka | Is-beddelka |
|---|---|---|---|
| Fire-and-forget isla process-ka | Jawaab kadib sii wad shaqada server-ka | Dejin la'aan | Waa lumaa haddii server-ku joogsado; ma jiro isku dayid |
Timer gudaha process-ka (setInterval, setTimeout) | Timer ku jira server-ka socda | Aad u fudud | Ma shaqeeyo markuu seexdo; wax isku mid ah oo badan haddii nuqullo badan la socodsiiyo |
| Queue ku salaysan database | Shaqooyinka loo kaydiyo safka; worker-ku wuu qabtaa oo wuu socodsiiyaa | Isticmaalaya database-ka aad haysato; joogto; fudud in la eego | Adiga ayaad dhisaysaa dib-u-isku-dayga iyo qufulka; wax worker-ka socodsiiya ayaa u baahan |
| Queue gaar ah (ku salaysan Redis ama maaraysan) | Adeeg queue ah oo worker-yo | Astaamaha dib-u-isku-dayga iyo jadwalka oo waara | Adeeg dheeraad ah oo la maamulo oo kharash ku leh |
| Adeeg shaqo ama workflow hosted ah | Qof saddexaad ayaa wicinaya endpoint-kaaga dib-u-isku-day iyo jadwal | Jadwalka iyo dib-u-isku-dayga waa loo maareeyay | Ku tiirsanaanta iibiyaha; account iyo furayaal kale |
| Scheduler dibadda oo wicinaya endpoint | Timer meel kale ayaa diraa codsi HTTP wakhti go'an | Wuxuu shaqeeyaa martigeliye kasta, oo ay ku jiraan kuwa scale-to-zero | Xadadka ugu yar ee waqtiga iyo dib-dhacyada; ilaali endpoint-ka |
| Cron-ka dhexe ee martigeliyaha | Platform-ku wuxuu socodsiiyaa amar wakhti go'an | Fudud meesha uu jiro | Ma aha martigeliye kasta oo bixiya |
Ma jiro jawaab keli ah oo saxda ah. App yar badanaa wuxuu u baahan yahay oo keliya database queue iyo scheduler dibadda.
Sababta martigeliyeyaasha scale-to-zero ay isbeddelinayaan sawirka
Martigeliyeyaasha casriga ah badanaa app-kaaga waxay seexiyaan markii aan qofna isticmaalin, oo waxay toosiyaan codsiga xiga. Taasi lacag ayey badbaadinaysaa, laakiin server-ka seexday ma socodsiiyo code: timer-yadu ma shaqeeyaan, worker-yaduna ma sugaan. Martigeliyeyaashan, shaqada jadwalka leh waa inay ku bilaabataa codsi soo galaya, oo isha ugu fudud ee codsigaas waa scheduler dibadda. Wicitaan kasta wuxuu toosiyaa app-ka (inta badan iyo database-ka), sidaas darteed wicitaanka daqiiqad kasta wuxuu kharash ku keenaa ka badan kan 15 daqiiqo kasta. Dooro jadwalka ugu gaabiya ee u qaneeca baahida.
Qaabka 1: Queue database
Jobs-ka la kicinayo:
- Samee miis
jobs: nooca, payload (JSON), xaaladda (pending,running,done,failed), isku dayga, run_after, last_error, waqtiyada. - Markii wax dhaco, geli safka job isla transaction-ka isbeddelka sababa, si ay isku guuleystaan ama isku fashilmaan.
- Worker-ku wuxuu qaadaa jobs-ka wakhtigoodu yimid, wuxuu calaamadeeyaa
running, wuu shaqeeyaa, kadibna calaamadeeyaadone. - Fashil kasta, kordhi
attempts, dhigrun_aftermid dambe (tusaale ahaan 1, 5, kadibna 30 daqiiqo) oo kaydi khaladka. Xadka ugu sarreeya kadib, calaamadeefailedoo digniiso qof.
Haddii in ka badan hal worker ay socon karaan isla mar, jobs-ka waa in si ammaan ah loo qabtaa. Postgres, SELECT ... FOR UPDATE SKIP LOCKED wuxuu u ogolaanayaa worker kasta inuu qabto safka kala duwan isaga oo aan isku dhicin.
Maxaa worker-ka socodsiiya? Server-ka had iyo jeer shaqeeya, loop ku jira process gooni ah. Martigeliyaha scale-to-zero, endpoint-ka jadwalka leh ee Qaabka 2 wuxuu wicitaan kasta ku habboon batch ka mid ah jobs-ka wakhtigoodu yimid.
Qaabka 2: Scheduler dibadda oo app-kaaga wicinaya
Jobs-ka jadwalka leh:
- Ku dar endpoint sida
POST /api/cron/send-reminders. - Ilaali: u baahan token sir ah header-ka, oo loo kaydiyo sir labada dhinac, kana diid wax kasta oo kale.
- Ka dhig idempotent: markii la socodsiiyo laba jeer daqiiqad isku mid ah, waa inaysan diraynin laba xusuusin. Diiwaan geli waxa la diray.
- Hay wicitaan kasta gaaban: batch (tusaale ahaan, 100 shay) socodsii, kadibna wicitaanka xiga ha qaato inta kale.
- Scheduler-ka u jeex endpoint-kaas.
Doorashooyinka scheduler-ka:
- GitHub Actions scheduled workflows. Bilaash ah iyadoo ku jirta xadadka isticmaalka GitHub. Sida bishii Sebtember 2026, dukumentiyada GitHub waxay sheegaan in wakhtiga ugu gaabiya uu yahay mar kasta 5 daqiiqo, socodsiinta waxa laga yaabaa in la dib u dhigo waqtiyada mashquulka ah (gaar ahaan bilowga saac kasta), jadwallada waxay isticmaalaan UTC default ahaan, workflows-ka jadwalka leh ee repository dadweyne ahna waa la damiyaa 60 maalmood oo aan waxba laga sameyn repository-ga.
- Adeegyada cron hosted ah. Waxaa jira adeegyo badan oo keliya u shaqeeya inay URL wicin wakhti go'an. Hubi kalsoonida, wakhtiga ugu gaabiya iyo digniinta ka hor inta aadan ku tiirsanaan.
- Scheduler-ka bixiyaha cloud-kaaga. Haddii aad hore u isticmaasho bixiye cloud weyn, wuxuu leeyahay scheduler maamul ah oo wicin kara endpoint HTTPS.
- Adeeg shaqo ama workflow hosted ah. Kuwani waxay isku geeyaan jadwalka, queues-ka iyo dib-u-isku-dayga, oo waxay wicinayaan endpoint-kaaga talaabo kasta. Ka barbardhig qiimaha iyo xadadka bogga iibiye kasta.
Qaabka 3: Ka tag bixiyaha inuu sameeyo
Marar badan background job ugu wanaagsan waa midna:
- Lacag-bixinta. Stripe wuu dib u isku dayaa lacag-bixinta subscription-ka ee fashilantay wuuna diraa webhooks; ti ka jawaabaya halkii aad ka codsan lahayd. Eeg waa maxay webhook.
- Emaylka. Bixiyayaashu waxay isku soo ururiyaan oo dib u isku dayaan gaarsiinta markaad fariinta u gudbiso.
- Shaqada AI ee badan. OpenAI iyo Anthropic waxay bixiyaan batch APIs codsiyada aan degdegga ahayn oo aad soo dirto oo hal mar dambe soo ururiso.
Prompts-ka aad siisid dhisaha AI-gaaga
Queue ahaan:
Ku dar queue background job isticmaalaya miis
jobsoo database-kayaga ku jira (nooca, payload JSON, xaaladda, attempts, run_after, last_error). Marka isticmaaluhu diiwaan galo, geli job send_welcome_email isla transaction-ka halkii aad emayl ku diri lahayd isla markiiba. Ku dar function processJobs(limit) oo qabta jobs-ka wakhtigoodu yimid isticmaalaya SELECT ... FOR UPDATE SKIP LOCKED, socodsiiya, oo dib u isku dayo fashilka 1, 5 iyo 30 daqiiqo, calaamadeeyanafailedmarka 4 isku day dhammaado.
Trigger jadwal ahaan:
Ku dar POST /api/cron/tick oo ilaalinaya bearer token ka yimid sirta CRON_SECRET; diid codsi kasta oo aan lahayn. Wicitaan kasta socodsii processJobs(100) oo dir xusuusinta booking-ga ee ku imanaya 24 saac ee soo socda oo aan weli la diri, oo diiwaan geli xusuusinta la diray si aanan wax mar labaad loo dirin. Soo celi summary JSON ah oo ah waxa socday. Kadibna qor GitHub Actions workflow kaas oo wicinaya endpoint-kan 15 daqiiqo kasta, isagoo URL-ka iyo token-ka ka akhrinaya repository secrets.
Khaladaadka caadiga ah
- Isku halaynta
setInterval. Si aamusan ayuu u joogsadaa markii server-ku seexdo ama dib u bilowdo, wuxuuna laba jeer u kordhaa markii laba nuqul socdaan. - Endpoint cron oo aan ilaalin. Qof kasta oo helaa wuu socodsiin karaa jobs-kaaga, ama biilkaaga email-ka.
- Jobs aan idempotent ahayn. Dib-u-isku-dayga iyo wicitaannada scheduler-ka ee laba jibbaaran way dhacaan. Ku naqshadee iyaga.
- Aan lahayn muuqaal fashil. Job fashil aamusan toddobaad oo dhan wuu ka xun yahay mid si cad u fashila. Khaladaadka diiwaan geli oo digniiso fashilka soo noqnoqda.
- Socodsiinno dheer hal codsi. Codsiyada way dhammaadaan wakhtigooda. Batch-ka u socodsii.
- Jadwal aad u badan. Wicitaan kasta martigeliye scale-to-zero ah wuu toosiyaa oo biilaa app-ka. Jadwalka ku habee baahida dhabta ah.
- Aagagga waqtiga. "9ka subaxnimo" waxay u egtahay wax kala duwan scheduler-kaaga (inta badan UTC) iyo isticmaalayaashaada. Waqtiyada UTC ku kaydi oo isticmaale kasta u beddel.
- Sirta workflow file-ka gudihiisa. Token-yada ku hay store-ka sirta ee scheduler-ka. Eeg sida loo ilaaliyo furayaasha API.
Liiska hubinta
- Shaqada gaabiska ah waxa loo wareejiyay codsiyada isticmaalaha
- Jobs-ka waxa si joogto ah loo kaydiyay, ma aha oo keliya xusuusta
- Dib-u-isku-day oo leh dib-dhacyo kor u kacaya iyo xad
- Job kasta waa ammaan in laba jeer la socodsiiyo
- Endpoint-ka jadwalka leh waxaa ilaalinaya token sir ah
- Socodsiin kasta waxay habaynaysaa batch xad leh
- Jobs-ka fashilanta way muuqdaan, digniinaha ayaa jira
- Wakhtiga jadwalka waxaa loo doortay kharashka martigelinta oo la tixgelinayo
- Waqtiyada waxaa lagu kaydiyay UTC
Background jobs ee Mythex
Dukumentiyada Mythex ma sharraxayaan shaqooyinka jadwalka leh ama cron, app-yada daabacanna iyo database-yadoodu way seexdaan markay firaaqadaan oo way toosnaan codsiga xiga (eeg Xadadka martigelinta). Sidaas darteed ha ku tiirsanaan timer-yada gudaha app-kaaga. Habka shaqeeya waa midka kor ku xusan: wakiilka weydiiso miis jobs ah iyo endpoint ilaaliyo token, kadibna scheduler dibadda u tilmaam URL-ka app-kaaga daabacan. Token-ka ku kaydi sirta mashruuca, oo xusuusnow in wicitaan kasta uu credit-yada ka qaado wakhtiga app-ka iyo database-ka ay toosan yihiin, sidaas darteed dooro jadwal macquul ah. Haddii app-kaagu u baahdo API backend tan, REST API backend waa bilow, sida loo dhiso REST API wuxuu daboolayaa naqshadeynta endpoint-yada. Haddii shaqooyinka joogtada ah ama bots-ka ay yihiin cuntada alaabtaada, martigeliye loo dhisay process-yada joogtada ah ayaa laga yaabaa inuu kugu habboon yahay.
Su'aalaha
Waa maxay background job?
Background job waa shaqo app-kaagu ku sameeyo wixii ka baxsan codsiga uu isticmaaluhu sugayo, sida diri emaylada, cabbiri sawirrada, soo saar warbixinno ama isku qabsii xogta. Isticmaaluhu jawaab degdeg ah ayuu helaa, shaqadana si gooni ah ayay u socotaa, waxayna dib loo isku dayi karaa haddii ay fashilanto.
Sidee baan u socodsiiyaa hawl jadwal leh haddii martigeliyahaygu aanu cron lahayn?
Ku dar endpoint ilaaliyo oo shaqada qabta, kadibna ka dhig scheduler dibadda inuu wicino wakhti go'an. Doorashooyinka waxaa ka mid ah workflow GitHub Actions oo jadwalaysan, adeeg cron hosted ah, ama scheduler-ka bixiyaha cloud-kaaga. Ilaali endpoint-ka token sir ah.
Ma isticmaali karaa setInterval ama setTimeout jadwallada?
Kaliya hawlo yar oo aan muhiimka ahayn, server-ka had iyo jeer shaqeynaya. Haddii server-ku dib u bilaabmo, eber noqdo ama koobiyo badan socodsiiyo, timer-yada way lumaan ama way mar ka badan ayay socdaan. Shaqada jadwalka leh ku kaydi database ama isticmaal scheduler.
Ma Mythex wuxuu taageeraa cron jobs?
Dukumentiyada Mythex ma sharraxayaan shaqooyinka jadwalka leh ama cron, app-yada daabacanna way seexdaan markay firaaqadaan. Habka la isku halayn karo waa scheduler dibadda oo wicinaya endpoint ilaaliyo oo app-kaaga ku jira, kaas oo app-ka toosiya oo shaqada socodsiiya.