വെബ് ആപ്പിൽ ബാക്ഗ്രൗണ്ട് ജോബുകൾ എങ്ങനെ നടത്താം: ക്യൂകൾ, ഷെഡ്യൂലറുകൾ, Cron
വെബ് ആപ്പിൽ ബാക്ഗ്രൗണ്ട് ജോബുകൾ നടത്താൻ, ആദ്യം ജോലിയെ രണ്ട് തരമായി വേർതിരിക്കുക. ട്രിഗർ ചെയ്യുന്ന ജോബുകൾ (സ്വാഗത ഇമെയിൽ അയയ്ക്കൽ, അപ്ലോഡ് പ്രോസസ്സ് ചെയ്യൽ) ഒരു ജോബ് ക്യൂവിൽ സൂക്ഷിക്കാം, പലപ്പോഴും നിങ്ങളുടെ ഡാറ്റാബേസിലെ ഒരു ടേബിൾ, റീട്രൈകളോടെ ഒരു വർക്കർ കൈകാര്യം ചെയ്യും. ഷെഡ്യൂൾ ചെയ്ത ജോബുകൾ (രാത്രിയിലെ റിപ്പോർട്ട്, ഓരോ 15 മിനിറ്റിലുമുള്ള ഓർമ്മപ്പെടുത്തലുകൾ) ഒരു സമയക്രമത്തിൽ തീപ്പൊരി പോലെ പ്രവർത്തിക്കുന്ന എന്തെങ്കിലും ആവശ്യമാണ്: ഹോസ്റ്റിന്റെ cron സൗകര്യം, അല്ലെങ്കിൽ നിങ്ങളുടെ ആപ്പിലെ സംരക്ഷിത എൻഡ്പോയിന്റ് വിളിക്കുന്ന ബാഹ്യ ഷെഡ്യൂലർ. ജോബുകൾ രണ്ടുതവണ ഓടിയാലും സുരക്ഷിതമാകണം, പരാജയങ്ങൾ രേഖപ്പെടുത്തണം, ഉറങ്ങാനോ റീസ്റ്റാർട്ട് ആകാനോ കഴിയുന്ന സെർവറിനുള്ളിലെ ടൈമറിനെ ഒരിക്കലും ആശ്രയിക്കരുത്.
ഈ ഗൈഡ് ഓപ്ഷനുകൾ, ഓരോന്നും എപ്പോൾ യോജിക്കുന്നു, പൂജ്യത്തിലേക്ക് സ്കെയിൽ ചെയ്യുന്ന ഹോസ്റ്റുകളിലുൾപ്പെടെ AI ആപ്പ് ബിൽഡർ ഉപയോഗിച്ച് അവ എങ്ങനെ സജ്ജമാക്കാം എന്നിവ വിശദീകരിക്കുന്നു.
ബാക്ഗ്രൗണ്ട് ജോബ് എന്ന് കണക്കാക്കുന്നത് എന്താണ്
മന്ദഗതിയുള്ളതോ വിശ്വസനീയമല്ലാത്തതോ ഉപയോക്താവിന്റെ ഉടനടി പ്രതികരണത്തിന് ആവശ്യമല്ലാത്തതോ ആയ എന്തും:
- ഇമെയിലുകൾ, അറിയിപ്പുകൾ, രസീതുകൾ അയയ്ക്കൽ
- ചിത്രങ്ങളുടെ വലുപ്പം മാറ്റൽ, വീഡിയോ ട്രാൻസ്കോഡിംഗ്, PDF ഉണ്ടാക്കൽ
- മന്ദഗതിയുള്ള മൂന്നാംകക്ഷി APIകൾ വിളിക്കൽ, ദീർഘമായ ജോലികൾക്കുള്ള AI മോഡലുകൾ ഉൾപ്പെടെ
- മറ്റൊരു സിസ്റ്റത്തിൽ നിന്ന് ഡാറ്റ ഇമ്പോർട്ട് ചെയ്യൽ അല്ലെങ്കിൽ സിങ്ക് ചെയ്യൽ
- രാത്രിയിലെ ക്ലീൻ-അപ്പ്, റിപ്പോർട്ടുകൾ, ഓർമ്മപ്പെടുത്തലുകൾ
ഇത് അഭ്യർത്ഥനയ്ക്കുള്ളിൽ ചെയ്താൽ പേജുകൾ മന്ദഗതിയിലും ദുർബലവുമാകും: ഇമെയിൽ ദാതാവ് ഡൗൺ ആണെങ്കിൽ ഉപയോക്താവിന്റെ സൈൻ അപ്പ് പരാജയപ്പെടും. ബാക്ഗ്രൗണ്ടിലേക്ക് മാറ്റിയാൽ ഉപയോക്താവിന് തൽക്ഷണ പ്രതികരണം കിട്ടും, ജോബ് വീണ്ടും ശ്രമിക്കാനാകും.
ഓപ്ഷനുകൾ
| ഓപ്ഷൻ | എങ്ങനെ പ്രവർത്തിക്കുന്നു | ഗുണങ്ങൾ | ദോഷങ്ങൾ |
|---|---|---|---|
| അതേ പ്രോസസ്സിൽ fire-and-forget | പ്രതികരിച്ച ശേഷം സെർവറിൽ ജോലി തുടരുന്നു | സജ്ജീകരണം വേണ്ട | സെർവർ നിന്നാൽ നഷ്ടപ്പെടും; റീട്രൈ ഇല്ല |
പ്രോസസ്സിനുള്ളിലെ ടൈമർ (setInterval, setTimeout) | പ്രവർത്തിക്കുന്ന സെർവറിലെ ഒരു ടൈമർ | ലളിതം | ഉറങ്ങുമ്പോൾ ഓടില്ല; പല പകർപ്പുകളിൽ ഇരട്ടിക്കും |
| ഡാറ്റാബേസ് പിന്തുണയുള്ള ക്യൂ | ജോബുകൾ വരികളായി സേവ് ചെയ്യുന്നു; ഒരു വർക്കർ അവ എടുത്ത് ഓടിക്കുന്നു | നിലവിലുള്ള ഡാറ്റാബേസ് ഉപയോഗിക്കുന്നു; നിലനിൽക്കുന്നു; പരിശോധിക്കാൻ എളുപ്പം | റീട്രൈയും ലോക്കിംഗും നിങ്ങൾ നിർമ്മിക്കണം; വർക്കർ ഓടിക്കാൻ എന്തെങ്കിലും വേണം |
| സമർപ്പിത ക്യൂ (Redis അടിസ്ഥാനമാക്കിയോ മാനേജ്ഡോ) | ഒരു ക്യൂ സേവനവും വർക്കർമാരും | പക്വമായ റീട്രൈ, ഷെഡ്യൂളിംഗ് സവിശേഷതകൾ | നടത്താനും പണം നൽകാനും മറ്റൊരു സേവനം |
| ഹോസ്റ്റഡ് ജോബ് അല്ലെങ്കിൽ വർക്ക്ഫ്ലോ സേവനം | മൂന്നാം കക്ഷി നിങ്ങളുടെ എൻഡ്പോയിന്റുകൾ റീട്രൈകളോടെ വിളിക്കുന്നു | ഷെഡ്യൂളിംഗും റീട്രൈയും നിങ്ങൾക്കായി കൈകാര്യം ചെയ്യുന്നു | വെണ്ടറിനെ ആശ്രയിക്കണം; മറ്റൊരു അക്കൗണ്ടും കീയും |
| എൻഡ്പോയിന്റ് വിളിക്കുന്ന ബാഹ്യ ഷെഡ്യൂലർ | മറ്റെവിടെയോ ഒരു ടൈമർ ഷെഡ്യൂൾ പ്രകാരം HTTP അഭ്യർത്ഥന അയയ്ക്കുന്നു | ഏത് ഹോസ്റ്റിലും പ്രവർത്തിക്കുന്നു, പൂജ്യത്തിലേക്ക് സ്കെയിൽ ചെയ്യുന്നതുൾപ്പെടെ | കുറഞ്ഞ ഇടവേളകളും വൈകലുകളും; എൻഡ്പോയിന്റ് സംരക്ഷിക്കണം |
| ഹോസ്റ്റിന്റെ അന്തർനിർമ്മിത cron | പ്ലാറ്റ്ഫോം ഷെഡ്യൂൾ പ്രകാരം ഒരു കമാൻഡ് ഓടിക്കുന്നു | ഉള്ളിടത്ത് ലളിതം | എല്ലാ ഹോസ്റ്റുകളും ഇത് നൽകുന്നില്ല |
ഒറ്റ ശരിയായ ഉത്തരമില്ല. ഒരു ചെറിയ ആപ്പിന് പലപ്പോഴും ഒരു ഡാറ്റാബേസ് ക്യൂയും ഒരു ബാഹ്യ ഷെഡ്യൂലറും മാത്രം മതി.
പൂജ്യത്തിലേക്ക് സ്കെയിൽ ചെയ്യുന്ന ഹോസ്റ്റുകൾ ചിത്രം മാറ്റുന്നത് എങ്ങനെ
ആരും ഉപയോഗിക്കാത്തപ്പോൾ പല ആധുനിക ഹോസ്റ്റുകളും നിങ്ങളുടെ ആപ്പ് ഉറക്കുന്നു, അടുത്ത അഭ്യർത്ഥനയ്ക്ക് ഉണർത്തുന്നു. അത് പണം ലാഭിക്കുന്നു, എന്നാൽ ഉറങ്ങുന്ന സെർവർ ഒരു കോഡും ഓടിക്കുന്നില്ല: ടൈമറുകൾ ഫയർ ചെയ്യില്ല, വർക്കർമാർ പോൾ ചെയ്യില്ല. ഈ ഹോസ്റ്റുകളിൽ, ഷെഡ്യൂൾ ചെയ്ത ജോലി വരുന്ന ഒരു അഭ്യർത്ഥനയിൽ നിന്ന് തുടങ്ങണം, ആ അഭ്യർത്ഥനയുടെ ഏറ്റവും എളുപ്പമുള്ള ഉറവിടം ഒരു ബാഹ്യ ഷെഡ്യൂലറാണ്. ഓരോ കോളും ആപ്പിനെ (പലപ്പോഴും അതിന്റെ ഡാറ്റാബേസിനെയും) ഉണർത്തുന്നതിനാൽ, ഓരോ മിനിറ്റിലും വിളിക്കുന്നത് ഓരോ 15 മിനിറ്റിലും വിളിക്കുന്നതിനേക്കാൾ ചെലവേറിയതാണ്. ആവശ്യം നിറവേറ്റുന്ന ഏറ്റവും സാവധാനമുള്ള ഷെഡ്യൂൾ തിരഞ്ഞെടുക്കുക.
പാറ്റേൺ 1: ഒരു ഡാറ്റാബേസ് ജോബ് ക്യൂ
ട്രിഗർ ചെയ്യുന്ന ജോബുകൾക്ക്:
jobsടേബിൾ ഉണ്ടാക്കുക: തരം, പേലോഡ് (JSON), സ്റ്റാറ്റസ് (pending,running,done,failed), attempts, run_after, last_error, സമയ മുദ്രകൾ.- എന്തെങ്കിലും സംഭവിക്കുമ്പോൾ, അതിന് കാരണമായ മാറ്റത്തിന്റെ അതേ ട്രാൻസാക്ഷനിൽ ഒരു ജോബ് വരി ഇൻസേർട്ട് ചെയ്യുക, അതുവഴി അവ ഒന്നിച്ച് വിജയിക്കുകയോ പരാജയപ്പെടുകയോ ചെയ്യും.
- ഒരു വർക്കർ സമയമായ ജോബുകൾ എടുത്ത്,
runningഎന്ന് അടയാളപ്പെടുത്തി, ജോലി ചെയ്ത്,doneഎന്ന് അടയാളപ്പെടുത്തുന്നു. - പരാജയപ്പെട്ടാൽ,
attemptsകൂട്ടുക,run_afterപിന്നീടാക്കുക (ഉദാഹരണത്തിന് 1, 5, പിന്നെ 30 മിനിറ്റ്), പിശക് സൂക്ഷിക്കുക. പരമാവധി എത്തിയാൽfailedഎന്ന് അടയാളപ്പെടുത്തി ആരെയെങ്കിലും അറിയിക്കുക.
ഒരേ സമയം ഒന്നിലധികം വർക്കർമാർ ഓടാൻ സാധ്യതയുണ്ടെങ്കിൽ, ജോബുകൾ സുരക്ഷിതമായി എടുക്കണം. Postgres-ൽ, SELECT ... FOR UPDATE SKIP LOCKED ഓരോ വർക്കറെയും കൂട്ടിമുട്ടാതെ വ്യത്യസ്ത വരികൾ എടുക്കാൻ അനുവദിക്കുന്നു.
വർക്കറെ ഓടിക്കുന്നത് എന്താണ്? എപ്പോഴും ഓണായ സെർവറിൽ, പ്രത്യേക പ്രോസസ്സിലെ ഒരു ലൂപ്പ്. പൂജ്യത്തിലേക്ക് സ്കെയിൽ ചെയ്യുന്ന ഹോസ്റ്റിൽ, പാറ്റേൺ 2-ലെ ഷെഡ്യൂൾ ചെയ്ത എൻഡ്പോയിന്റിന് ഓരോ കോളിലും സമയമായ ജോബുകളുടെ ഒരു ബാച്ച് പ്രോസസ്സ് ചെയ്യാം.
പാറ്റേൺ 2: നിങ്ങളുടെ ആപ്പ് വിളിക്കുന്ന ബാഹ്യ ഷെഡ്യൂലർ
ഷെഡ്യൂൾ ചെയ്ത ജോബുകൾക്ക്:
POST /api/cron/send-remindersപോലെ ഒരു എൻഡ്പോയിന്റ് ചേർക്കുക.- സംരക്ഷിക്കുക: ഒരു ഹെഡറിൽ ഒരു രഹസ്യ ടോക്കൺ ആവശ്യപ്പെടുക, രണ്ട് വശത്തും ഒരു സീക്രട്ടായി സൂക്ഷിക്കുക, മറ്റെന്തും നിരസിക്കുക.
- ഐഡംപോട്ടന്റ് ആക്കുക: ഒരേ മിനിറ്റിൽ രണ്ടുതവണ ഓടിയാലും രണ്ട് ഓർമ്മപ്പെടുത്തലുകൾ അയയ്ക്കരുത്. എന്തയച്ചു എന്ന് രേഖപ്പെടുത്തുക.
- ഓരോ കോളും ചെറുതാക്കി നിർത്തുക: ഒരു ബാച്ച് (ഉദാഹരണത്തിന് 100 ഇനങ്ങൾ) പ്രോസസ്സ് ചെയ്യുക, ബാക്കി അടുത്ത കോളിന് വിടുക.
- ഒരു ഷെഡ്യൂലർ അതിലേക്ക് ചൂണ്ടിക്കാണിക്കുക.
ഷെഡ്യൂലർ തിരഞ്ഞെടുപ്പുകൾ:
- GitHub Actions ഷെഡ്യൂൾ ചെയ്ത വർക്ക്ഫ്ലോകൾ. GitHub-ന്റെ ഉപയോഗ പരിധിക്കുള്ളിൽ സൗജന്യം. 2026 സെപ്റ്റംബർ പ്രകാരം, GitHub-ന്റെ ഡോക്സ് പറയുന്നത്, ഏറ്റവും ചെറിയ ഇടവേള ഓരോ 5 മിനിറ്റിലും ഒരിക്കൽ എന്നാണ്; തിരക്കുള്ള സമയങ്ങളിൽ (പ്രത്യേകിച്ച് ഓരോ മണിക്കൂറിന്റെയും തുടക്കത്തിൽ) ഓട്ടം വൈകാം, ഷെഡ്യൂളുകൾ സ്ഥിരമായി UTC ഉപയോഗിക്കുന്നു, പബ്ലിക് റിപ്പോസിറ്ററിയിലെ ഷെഡ്യൂൾ ചെയ്ത വർക്ക്ഫ്ലോകൾ റിപ്പോസിറ്ററി പ്രവർത്തനമില്ലാതെ 60 ദിവസത്തിന് ശേഷം നിർത്തപ്പെടുന്നു.
- ഹോസ്റ്റഡ് cron സേവനങ്ങൾ. ഒരു URL ഷെഡ്യൂളിൽ വിളിക്കുക മാത്രം ചെയ്യുന്ന പല സേവനങ്ങളുമുണ്ട്. ഒന്നിനെ ആശ്രയിക്കുന്നതിന് മുമ്പ് വിശ്വാസ്യത, കുറഞ്ഞ ഇടവേള, അലർട്ടിംഗ് എന്നിവ പരിശോധിക്കുക.
- നിങ്ങളുടെ ക്ലൗഡ് ദാതാവിന്റെ ഷെഡ്യൂലർ. ഒരു വലിയ ക്ലൗഡ് ദാതാവ് ഇതിനകം ഉപയോഗിക്കുന്നുവെങ്കിൽ, HTTPS എൻഡ്പോയിന്റ് വിളിക്കാൻ കഴിയുന്ന മാനേജ്ഡ് ഷെഡ്യൂലർ അതിലുണ്ടാകും.
- ഹോസ്റ്റഡ് ജോബ് അല്ലെങ്കിൽ വർക്ക്ഫ്ലോ സേവനം. ഇവ ഷെഡ്യൂളിംഗ്, ക്യൂകൾ, റീട്രൈകൾ ഒന്നിച്ചു ചേർക്കുന്നു, ഓരോ ഘട്ടത്തിനും നിങ്ങളുടെ എൻഡ്പോയിന്റുകൾ വിളിക്കുന്നു. വില, പരിധികൾ എന്നിവ ഓരോ വെണ്ടറിന്റെയും സൈറ്റിൽ താരതമ്യം ചെയ്യുക.
പാറ്റേൺ 3: ദാതാവ് ചെയ്യട്ടെ
ചിലപ്പോൾ ഏറ്റവും നല്ല ബാക്ഗ്രൗണ്ട് ജോബ് ഒന്നുമില്ലാത്തതാണ്:
- പേയ്മെന്റുകൾ. പരാജയപ്പെട്ട സബ്സ്ക്രിപ്ഷൻ പേയ്മെന്റുകൾ Stripe വീണ്ടും ശ്രമിക്കുകയും webhooks അയയ്ക്കുകയും ചെയ്യുന്നു; പോൾ ചെയ്യുന്നതിന് പകരം നിങ്ങൾ പ്രതികരിക്കുക. webhook എന്താണെന്ന് കാണുക.
- ഇമെയിൽ. സന്ദേശം കൈമാറിയാൽ ദാതാക്കൾ ഡെലിവറി ക്യൂ ചെയ്യുകയും വീണ്ടും ശ്രമിക്കുകയും ചെയ്യുന്നു.
- ബൾക്ക് AI ജോലി. OpenAI, Anthropic എന്നിവ അടിയന്തരമല്ലാത്ത അഭ്യർത്ഥനകൾക്ക് ബാച്ച് APIകൾ നൽകുന്നു; നിങ്ങൾ സമർപ്പിച്ച് പിന്നീട് ശേഖരിക്കാം.
നിങ്ങളുടെ AI ബിൽഡറിന് നൽകേണ്ട പ്രോംപ്റ്റുകൾ
ഒരു ക്യൂവിന്:
ഞങ്ങളുടെ ഡാറ്റാബേസിൽ ഒരു
jobsടേബിൾ ഉപയോഗിച്ച് ഒരു ബാക്ഗ്രൗണ്ട് ജോബ് ക്യൂ ചേർക്കുക (തരം, പേലോഡ് JSON, സ്റ്റാറ്റസ്, attempts, run_after, last_error). ഒരു ഉപയോക്താവ് സൈൻ അപ്പ് ചെയ്യുമ്പോൾ, ഇൻലൈനായി അയയ്ക്കുന്നതിന് പകരം അതേ ട്രാൻസാക്ഷനിൽ ഒരു send_welcome_email ജോബ് ഇൻസേർട്ട് ചെയ്യുക.SELECT ... FOR UPDATE SKIP LOCKEDഉപയോഗിച്ച് സമയമായ ജോബുകൾ എടുത്ത് ഓടിക്കുകയും പരാജയങ്ങൾ 1, 5, 30 മിനിറ്റുകൾക്ക് ശേഷം വീണ്ടും ശ്രമിക്കുകയും 4 ശ്രമങ്ങൾക്ക് ശേഷംfailedഎന്ന് അടയാളപ്പെടുത്തുകയും ചെയ്യുന്ന ഒരുprocessJobs(limit)ഫംഗ്ഷൻ ചേർക്കുക.
ഒരു ഷെഡ്യൂൾ ചെയ്ത ട്രിഗറിന്:
രഹസ്യം CRON_SECRET-ൽ നിന്നുള്ള ഒരു bearer ടോക്കൺ കൊണ്ട് സംരക്ഷിച്ച
POST /api/cron/tickചേർക്കുക; അത് ഇല്ലാത്ത ഏത് അഭ്യർത്ഥനയും നിരസിക്കുക. ഓരോ കോളുംprocessJobs(100)ഓടിക്കുകയും അടുത്ത 24 മണിക്കൂറിൽ സമയമാകുകയും ഇതുവരെ അയക്കാത്ത ബുക്കിംഗ് ഓർമ്മപ്പെടുത്തലുകൾ അയക്കുകയും ചെയ്യട്ടെ, ഒന്നും രണ്ടുതവണ അയക്കാതിരിക്കാൻ അയച്ച ഓർമ്മപ്പെടുത്തലുകൾ രേഖപ്പെടുത്തുക. ഓടിയതിന്റെ ഒരു JSON സംഗ്രഹം തിരികെ നൽകുക. തുടർന്ന് ഈ എൻഡ്പോയിന്റ് ഓരോ 15 മിനിറ്റിലും വിളിക്കുന്ന ഒരു GitHub Actions വർക്ക്ഫ്ലോ എഴുതുക, URLഉം ടോക്കണും റിപ്പോസിറ്ററി സീക്രട്ടുകളിൽ നിന്ന് വായിക്കട്ടെ.
സാധാരണ തെറ്റുകൾ
setInterval-നെ ആശ്രയിക്കൽ. സെർവർ ഉറങ്ങുമ്പോഴോ റീസ്റ്റാർട്ട് ആകുമ്പോഴോ അത് നിശ്ശബ്ദമായി നിൽക്കും, രണ്ട് പകർപ്പുകൾ ഓടുമ്പോൾ ഇരട്ടിക്കും.- സംരക്ഷിക്കാത്ത cron എൻഡ്പോയിന്റ്. അത് കണ്ടെത്തുന്ന ആർക്കും നിങ്ങളുടെ ജോബുകളോ ഇമെയിൽ ബില്ലോ ട്രിഗർ ചെയ്യാം.
- ഐഡംപോട്ടന്റ് അല്ലാത്ത ജോബുകൾ. റീട്രൈകളും ഡ്യൂപ്ലിക്കേറ്റ് ഷെഡ്യൂലർ കോളുകളും സംഭവിക്കും. അതിന് വേണ്ടി ഡിസൈൻ ചെയ്യുക.
- പരാജയങ്ങൾ കാണാനാകാത്തത്. ഒരാഴ്ച നിശ്ശബ്ദമായി പരാജയപ്പെടുന്ന ജോബ്, ഉച്ചത്തിൽ പരാജയപ്പെടുന്നതിനേക്കാൾ മോശമാണ്. പിശകുകൾ ലോഗ് ചെയ്ത് ആവർത്തിച്ചുള്ള പരാജയങ്ങളിൽ അലർട്ട് നൽകുക.
- ഒറ്റ അഭ്യർത്ഥനയിലെ ദീർഘ ഓട്ടങ്ങൾ. അഭ്യർത്ഥനകൾ ടൈം ഔട്ട് ആകും. ബാച്ചുകളായി പ്രോസസ്സ് ചെയ്യുക.
- പതിവിലും കൂടുതൽ തവണ ഷെഡ്യൂൾ ചെയ്യൽ. പൂജ്യത്തിലേക്ക് സ്കെയിൽ ചെയ്യുന്ന ഹോസ്റ്റിലെ ഓരോ കോളും ആപ്പിനെ ഉണർത്തി ബിൽ ചെയ്യുന്നു. ഇടവേള യഥാർത്ഥ ആവശ്യവുമായി പൊരുത്തപ്പെടുത്തുക.
- സമയമേഖലകൾ. "രാവിലെ 9" നിങ്ങളുടെ ഷെഡ്യൂലറിനും (പലപ്പോഴും UTC) നിങ്ങളുടെ ഉപയോക്താക്കൾക്കും വ്യത്യസ്ത കാര്യമാണ്. സമയങ്ങൾ UTC-യിൽ സൂക്ഷിച്ച് ഓരോ ഉപയോക്താവിനും പരിവർത്തനം ചെയ്യുക.
- വർക്ക്ഫ്ലോ ഫയലിൽ രഹസ്യങ്ങൾ. ടോക്കണുകൾ ഷെഡ്യൂലറിന്റെ സീക്രട്ട് സ്റ്റോറിൽ സൂക്ഷിക്കുക. API കീകൾ സുരക്ഷിതമായി സൂക്ഷിക്കുന്നത് എങ്ങനെ കാണുക.
ചെക്ക്ലിസ്റ്റ്
- മന്ദഗതിയുള്ള ജോലി ഉപയോക്തൃ അഭ്യർത്ഥനകളിൽ നിന്ന് മാറ്റിയിട്ടുണ്ട്
- ജോബുകൾ മെമ്മറിയിൽ മാത്രമല്ല, സ്ഥിരമായി സൂക്ഷിച്ചിരിക്കുന്നു
- വർദ്ധിക്കുന്ന വൈകലുകളോടും പരമാവധിയോടും കൂടി റീട്രൈകൾ
- ഓരോ ജോബും രണ്ടുതവണ ഓടിയാലും സുരക്ഷിതം
- ഷെഡ്യൂൾ ചെയ്ത എൻഡ്പോയിന്റ് ഒരു രഹസ്യ ടോക്കൺ കൊണ്ട് സംരക്ഷിച്ചിരിക്കുന്നു
- ഓരോ ഓട്ടവും പരിമിതമായ ഒരു ബാച്ച് പ്രോസസ്സ് ചെയ്യുന്നു
- പരാജയപ്പെട്ട ജോബുകൾ കാണാനാകും, അലർട്ടുകളോടെ
- ഹോസ്റ്റിംഗ് ചെലവ് മനസ്സിൽ വെച്ച് ഷെഡ്യൂൾ ഇടവേള തിരഞ്ഞെടുത്തു
- സമയങ്ങൾ UTC-യിൽ സൂക്ഷിച്ചിരിക്കുന്നു
Mythex-ലെ ബാക്ഗ്രൗണ്ട് ജോബുകൾ
ഷെഡ്യൂൾ ചെയ്തതോ cron ജോബുകളോ Mythex-ന്റെ ഡോക്യുമെന്റേഷനിൽ വിവരിച്ചിട്ടില്ല, പ്രസിദ്ധീകരിച്ച ആപ്പുകളും അവയുടെ ഡാറ്റാബേസുകളും വെറുതെയിരിക്കുമ്പോൾ ഉറങ്ങുകയും അടുത്ത അഭ്യർത്ഥനയ്ക്ക് ഉണരുകയും ചെയ്യും (ഹോസ്റ്റിംഗ് പരിധികൾ കാണുക). അതിനാൽ ആപ്പിനുള്ളിലെ ടൈമറുകളെ ആശ്രയിക്കരുത്. പ്രവർത്തിക്കുന്ന രീതി മുകളിൽ പറഞ്ഞതാണ്: ഒരു jobs ടേബിളും ടോക്കൺ-സംരക്ഷിത എൻഡ്പോയിന്റും ഏജന്റിനോട് ആവശ്യപ്പെടുക, തുടർന്ന് പ്രസിദ്ധീകരിച്ച URL-ലേക്ക് ഒരു ബാഹ്യ ഷെഡ്യൂലർ ചൂണ്ടിക്കാണിക്കുക. ടോക്കൺ ഒരു പ്രോജക്റ്റ് സീക്രട്ടായി സൂക്ഷിക്കുക, ഓരോ ഉണർവിലും ആപ്പും ഡാറ്റാബേസും ഉണർന്നിരിക്കുന്ന സമയത്തേക്ക് ക്രെഡിറ്റ് ചെലവാകുമെന്നത് ഓർക്കുക, അതിനാൽ ന്യായമായ ഇടവേള തിരഞ്ഞെടുക്കുക. ഇതിനായി നിങ്ങളുടെ ആപ്പിന് ഒരു API ബാക്കെൻഡ് വേണമെങ്കിൽ, REST API ബാക്കെൻഡ് റെസിപ്പി ഒരു തുടക്കമാണ്, എൻഡ്പോയിന്റുകൾ രൂപകൽപ്പന ചെയ്യുന്നത് REST API എങ്ങനെ നിർമ്മിക്കാം വിശദീകരിക്കുന്നു. എപ്പോഴും ഓണായ വർക്കർമാരോ ബോട്ടുകളോ നിങ്ങളുടെ ഉൽപ്പന്നത്തിന്റെ കാമ്പാണെങ്കിൽ, സ്ഥിരമായ പ്രോസസ്സുകൾക്കായി നിർമ്മിച്ച ഒരു ഹോസ്റ്റ് കൂടുതൽ യോജിച്ചേക്കാം.
ചോദ്യങ്ങൾ
എന്താണ് ഒരു ബാക്ഗ്രൗണ്ട് ജോബ്?
ഉപയോക്താവ് കാത്തിരിക്കുന്ന അഭ്യർത്ഥനയ്ക്ക് പുറത്ത് നിങ്ങളുടെ ആപ്പ് ചെയ്യുന്ന ജോലിയാണ് ബാക്ഗ്രൗണ്ട് ജോബ്, ഉദാഹരണത്തിന് ഇമെയിൽ അയയ്ക്കൽ, ചിത്രങ്ങളുടെ വലുപ്പം മാറ്റൽ, റിപ്പോർട്ടുകൾ ഉണ്ടാക്കൽ, ഡാറ്റ സിങ്ക് ചെയ്യൽ. ഉപയോക്താവിന് വേഗത്തിൽ പ്രതികരണം കിട്ടുന്നു, ജോബ് വേറെ പ്രവർത്തിക്കുന്നു, പരാജയപ്പെട്ടാൽ വീണ്ടും ശ്രമിക്കാം.
എന്റെ ഹോസ്റ്റിന് cron ഇല്ലെങ്കിൽ ഷെഡ്യൂൾ ചെയ്ത ടാസ്ക് എങ്ങനെ നടത്താം?
ജോലി ചെയ്യുന്ന ഒരു സംരക്ഷിത എൻഡ്പോയിന്റ് ചേർക്കുക, തുടർന്ന് ഒരു ബാഹ്യ ഷെഡ്യൂലർ അതിനെ ഒരു സമയക്രമത്തിൽ വിളിക്കട്ടെ. ഷെഡ്യൂൾ ചെയ്ത GitHub Actions വർക്ക്ഫ്ലോ, ഹോസ്റ്റഡ് cron സേവനം, അല്ലെങ്കിൽ നിങ്ങളുടെ ക്ലൗഡ് ദാതാവിന്റെ ഷെഡ്യൂലർ എന്നിവ ഓപ്ഷനുകളാണ്. എൻഡ്പോയിന്റ് ഒരു രഹസ്യ ടോക്കൺ കൊണ്ട് സംരക്ഷിക്കുക.
ഷെഡ്യൂൾ ചെയ്ത ജോബുകൾക്ക് setInterval അല്ലെങ്കിൽ setTimeout ഉപയോഗിക്കാമോ?
എപ്പോഴും പ്രവർത്തിക്കുന്ന സെർവറിൽ ചെറിയതും പ്രാധാന്യമില്ലാത്തതുമായ ജോലികൾക്ക് മാത്രം. സെർവർ റീസ്റ്റാർട്ട് ആകുകയോ പൂജ്യത്തിലേക്ക് സ്കെയിൽ ചെയ്യുകയോ പല പകർപ്പുകളായി ഓടുകയോ ചെയ്താൽ ടൈമറുകൾ നഷ്ടപ്പെടുകയോ ഒന്നിലധികം തവണ ഓടുകയോ ചെയ്യും. ഷെഡ്യൂൾ ചെയ്ത ജോലി ഡാറ്റാബേസിൽ സൂക്ഷിക്കുക, അല്ലെങ്കിൽ പകരം ഒരു ഷെഡ്യൂലർ ഉപയോഗിക്കുക.
Mythex cron ജോബുകളെ പിന്തുണയ്ക്കുമോ?
ഷെഡ്യൂൾ ചെയ്തതോ cron ജോബുകളോ Mythex-ന്റെ ഡോക്യുമെന്റേഷനിൽ വിവരിച്ചിട്ടില്ല, പ്രസിദ്ധീകരിച്ച ആപ്പുകൾ വെറുതെയിരിക്കുമ്പോൾ ഉറങ്ങുകയും ചെയ്യും. വിശ്വസനീയമായ വഴി, നിങ്ങളുടെ ആപ്പിലെ സംരക്ഷിത എൻഡ്പോയിന്റ് ഒരു ബാഹ്യ ഷെഡ്യൂലർ വിളിക്കുന്നതാണ്; അത് ആപ്പിനെ ഉണർത്തി ജോലി നടത്തും.