መመሪያዎች

በድር መተግበሪያ ውስጥ የጀርባ ስራዎችን እንዴት ማካሄድ፡ ወረፋዎች፣ መርሐ-ግብር ሰጪዎችና cron

በድር መተግበሪያ የጀርባ ስራዎችን ለማካሄድ መጀመሪያ ስራውን በሁለት ዓይነት ይከፋፍሉት። የሚነሱ ስራዎች (እንኳን ደህና መጡ ኢሜይል መላክ፣ ሰቀላ ማካሄድ) ወደ ስራ ወረፋ ሊቀመጡ ይችላሉ፣ ብዙ ጊዜ በዳታቤዝዎ ውስጥ እንደ ሰንጠረዥ፣ እና እንደገና በመሞከር በሰራተኛ ይያዛሉ። መርሐ-ግብር የተያዘላቸው ስራዎች (የምሽት ሪፖርት፣ በየ15 ደቂቃው ማስታወሻዎች) በጊዜ ሰሌዳ የሚነሳ ነገር ያስፈልጋቸዋል፦ የአስተናጋጁ cron ባህሪ፣ ወይም በመተግበሪያዎ ውስጥ የተጠበቀ ኤንድፖይንት የሚጠራ ውጫዊ መርሐ-ግብር ሰጪ። ስራዎች ሁልጊዜ ሁለት ጊዜ ቢሰሩ ደህና እንዲሆኑ ያድርጉ፣ ውድቀቶችን ይመዝግቡ፣ እና መተኛት ወይም ዳግም መጀመር በሚችል ሰርቨር ውስጥ ባለ ሰዓት ቆጣሪ ላይ በፍጹም አትተማመኑ።

ይህ መመሪያ አማራጮቹን፣ እያንዳንዱ መቼ እንደሚስማማ፣ እና በAI መተግበሪያ ገንቢ እንዴት እንደሚያዋቅሩ፣ ወደ ዜሮ በሚመዘኑ አስተናጋጆችም ላይ ጨምሮ ያብራራል።

የጀርባ ስራ ምን እንደሆነ

ቀርፋፋ፣ የማይታመን ወይም ለተጠቃሚው ፈጣን ምላሽ የማያስፈልግ ማንኛውም ነገር፦

  • ኢሜይሎች፣ ማሳወቂያዎችና ደረሰኞች መላክ
  • ምስሎችን መቀየር፣ ቪዲዮ መቀየር፣ PDF ማመንጨት
  • ቀርፋፋ የሶስተኛ ወገን ኤፒአዮችን መጥራት፣ ረጅም ስራ ላይ AI ሞዴሎችን ጨምሮ
  • ከሌላ ስርዓት ዳታ ማስመጣት ወይም ማመሳሰል
  • የሌሊት ጽዳት፣ ሪፖርቶችና ማስታወሻዎች

ይህንን በጥያቄው ውስጥ ማድረግ ገጾችን ቀርፋፋና ደካማ ያደርጋል፦ የኢሜይል አቅራቢው ቢወድቅ፣ የተጠቃሚው ምዝገባ ይወድቃል። ወደ ጀርባ ማዛወር ተጠቃሚው ፈጣን ምላሽ ያገኛል፣ ስራውም እንደገና ሊሞከር ይችላል።

አማራጮቹ

አማራጭእንዴት እንደሚሰራጥቅምጉዳት
በተመሳሳይ ሂደት ውስጥ ማስነሳት እና መርሳትምላሽ ይሰጣል፣ ከዚያ በሰርቨሩ ስራውን ይቀጥላልምንም ማዋቀር የለምሰርቨሩ ቢቆም ይጠፋል፤ እንደገና መሞከር የለም
በሂደቱ ውስጥ ሰዓት ቆጣሪ (setInterval፣ setTimeout)በሚሰራው ሰርቨር ውስጥ ያለ ሰዓት ቆጣሪቀላል ነውሲተኛ አይሰራም፤ ብዙ ቅጂዎች ካሉ ይደገማል
በዳታቤዝ የሚመራ ወረፋስራዎች እንደ ረድፎች ይቀመጣሉ፤ ሰራተኛ ይወስዳቸውና ያካሂዳቸዋልያለዎትን ዳታቤዝ ይጠቀማል፤ ዘላቂ ነው፤ ለመፈተሽ ቀላልየራስዎን እንደገና መሞከርና መቆለፍ ይገነባሉ፤ ሰራተኛውን የሚያካሂድ ነገር ያስፈልጋል
የተለየ ወረፋ (በRedis ላይ ወይም የተቀናበረ)የወረፋ አገልግሎትና ሰራተኞችየበሰሉ የድጋሚ ሙከራና መርሐ-ግብር ባህሪያትሌላ የሚሰራና የሚከፈል አገልግሎት
የተስተናገደ የስራ ወይም የፍሰት አገልግሎትሶስተኛ ወገን በድግግሞሽና በመርሐ-ግብር ኤንድፖይንቶችዎን ይጠራልመርሐ-ግብርና ድጋሚ ሙከራ ይያዛሉበአቅራቢው ላይ ጥገኛ፤ ሌላ መለያና ቁልፍ
ውጫዊ መርሐ-ግብር ሰጪ ኤንድፖይንት የሚጠራበሌላ ቦታ ያለ ሰዓት ቆጣሪ በጊዜ የኤችቲቲፒ ጥያቄ ይልካልበማንኛውም አስተናጋጅ ላይ ይሰራል፣ ወደ ዜሮ መመዘንን ጨምሮዝቅተኛ ክፍተቶችና መዘግየቶች፤ ኤንድፖይንቱን ጠብቁ
የአስተናጋጁ አብሮ የተገነባ cronመድረኩ ትዕዛዝ በጊዜ ሰሌዳ ያካሂዳልየሚገኝበት ቦታ ቀላልሁሉም አስተናጋጆች አይሰጡትም

አንድም ትክክለኛ መልስ የለም። ትንሽ መተግበሪያ ብዙ ጊዜ የዳታቤዝ ወረፋና ውጫዊ መርሐ-ግብር ሰጪ ብቻ ይፈልጋል።

ወደ ዜሮ የሚመዝኑ አስተናጋጆች ለምን ነገሩን ይለውጣሉ

ብዙ ዘመናዊ አስተናጋጆች ማንም ሳይጠቀምበት ሲቀር መተግበሪያዎን ያንቀላፋሉ፣ በቀጣዩ ጥያቄ ያነቃሉ። ይህ ገንዘብ ይቆጥባል፣ ነገር ግን የተኛ ሰርቨር ኮድ አያካሂድም፦ ሰዓት ቆጣሪዎች አይነሱም፣ ሰራተኞች አይጠይቁም። በእነዚህ አስተናጋጆች ላይ መርሐ-ግብር የተያዘለት ስራ በገቢ ጥያቄ መጀመር አለበት፣ ለዚያ ቀላሉ ምንጭ ውጫዊ መርሐ-ግብር ሰጪ ነው። እያንዳንዱ ጥሪ መተግበሪያውን (ብዙ ጊዜ ዳታቤዙንም) ያነቃል፣ ስለዚህ በየደቂቃው መጥራት በየ15 ደቂቃው ከመጥራት ይበልጣል። ፍላጎቱን የሚያሟላ በጣም ዘገምተኛውን መርሐ-ግብር ይምረጡ።

ስርዓተ-ጥለት 1፦ የዳታቤዝ ስራ ወረፋ

ለሚነሱ ስራዎች፦

  1. jobs ሰንጠረዥ ይፍጠሩ፦ ዓይነት፣ ዳታ (JSON)፣ ሁኔታ (pending፣ running፣ done፣ failed)፣ ሙከራዎች፣ run_after፣ last_error፣ የጊዜ ማህተሞች።
  2. የሆነ ነገር ሲከሰት፣ ለውጡ ከሚፈጠርበት ግብይት ጋር በአንድ ግብይት ውስጥ የስራ ረድፍ ያስገቡ፣ ስለዚህ አብረው ይሳካሉ ወይም አብረው ይወድቃሉ።
  3. ሰራተኛ ጊዜያቸው የደረሰ ስራዎችን ይወስዳል፣ running ብሎ ምልክት ያደርጋቸዋል፣ ስራውን ይሰራል እና done ያደርጋቸዋል።
  4. ሲወድቅ attempts ይጨምራል፣ run_after ወደ በኋላ ያዘጋጃል (ለምሳሌ 1፣ 5፣ ከዚያ 30 ደቂቃ)፣ ስህተቱንም ያስቀምጣል። ከከፍተኛው በኋላ failed ብሎ ምልክት አድርጎ አንድን ሰው ያሳውቃል።

ብዙ ሰራተኞች በአንድ ጊዜ ሊሰሩ ከቻሉ፣ ስራዎች በደህና መወሰድ አለባቸው። በPostgres ላይ SELECT ... FOR UPDATE SKIP LOCKED እያንዳንዱ ሰራተኛ የተለያዩ ረድፎችን እንዲወስድ ይፈቅዳል ያለ ግጭት።

ሰራተኛውን ማን ያካሂዳል? ሁልጊዜ በሚሰራ ሰርቨር ላይ፣ በተለየ ሂደት ውስጥ ያለ ዑደት። ወደ ዜሮ በሚመዘን አስተናጋጅ ላይ፣ በስርዓተ-ጥለት 2 ያለው መርሐ-ግብር የተያዘለት ኤንድፖይንት በእያንዳንዱ ጥሪ የተዘጋጁ ስራዎችን ቡድን ማካሄድ ይችላል።

ስርዓተ-ጥለት 2፦ ውጫዊ መርሐ-ግብር ሰጪ መተግበሪያዎን የሚጠራ

መርሐ-ግብር ለተያዘላቸው ስራዎች፦

  1. እንደ POST /api/cron/send-reminders ያለ ኤንድፖይንት ይጨምሩ።
  2. ይጠብቁት፦ በርዕስ ውስጥ ሚስጥር ቶከን ይጠይቁ፣ በሁለቱም በኩል እንደ ሚስጥር ይቀመጥ፣ ሌላ ሁሉንም ውድቅ ያድርጉ።
  3. እንደገና ቢሰራ ምንም ጉዳት እንዳይኖረው (idempotent) ያድርጉት፦ በአንድ ደቂቃ ውስጥ ሁለቴ ቢሰራ ሁለት ማስታወሻዎችን መላክ የለበትም። የተላከውን ይመዝግቡ።
  4. እያንዳንዱ ጥሪ አጭር ይሁን፦ ቡድን (ለምሳሌ 100 ዕቃዎች) ያካሂዱ፣ ቀጣዩ ጥሪ የቀረውን ይወስድ።
  5. መርሐ-ግብር ሰጪ ወደ እሱ አመልክቱ።

የመርሐ-ግብር ሰጪ ምርጫዎች፦

  • GitHub Actions መርሐ-ግብር የተያዘላቸው ስራዎች። በGitHub የአጠቃቀም ገደቦች ውስጥ ነጻ። በሴፕቴምበር 2026 እንደተገለጸው፣ የGitHub ሰነዶች አጭሩ ክፍተት በየ5 ደቂቃ አንድ ጊዜ እንደሆነ፣ በስራ የተጠመዱ ጊዜያት (በተለይ የእያንዳንዱ ሰዓት መጀመሪያ) ሊዘገዩ እንደሚችሉ፣ መርሐ-ግብሮች በነባሪ UTC እንደሚጠቀሙ፣ እና በህዝባዊ ማከማቻ ያሉ መርሐ-ግብር የተያዘላቸው ስራዎች ለ60 ቀናት ምንም የማከማቻ እንቅስቃሴ ከሌለ እንደሚቦዘኑ ይናገራሉ።
  • የተስተናገዱ cron አገልግሎቶች። ብዙ አገልግሎቶች አሉ ብቸኛ ስራቸው ዩአርኤልን በጊዜ ሰሌዳ መጥራት ነው። በላዩ ከመመካትዎ በፊት አስተማማኝነትን፣ ዝቅተኛ ክፍተትንና ማስጠንቀቂያዎችን ያረጋግጡ።
  • የደመና አቅራቢዎ መርሐ-ግብር ሰጪ። የትልቅ የደመና አቅራቢ ቀድሞ የሚጠቀሙ ከሆነ፣ HTTPS ኤንድፖይንት መጥራት የሚችል የሚተዳደር መርሐ-ግብር ሰጪ ይኖረዋል።
  • የተስተናገደ የስራ ወይም የፍሰት አገልግሎት። እነዚህ መርሐ-ግብር፣ ወረፋዎችና ድግግሞሽ ያዋህዳሉ፣ ለእያንዳንዱ ደረጃ ኤንድፖይንቶችዎን ይጠራሉ። ዋጋንና ገደቦችን በእያንዳንዱ አቅራቢ ድረ-ገጽ ያወዳድሩ።

ስርዓተ-ጥለት 3፦ አቅራቢው እንዲያደርገው ይፍቀዱ

አንዳንድ ጊዜ ምርጡ የጀርባ ስራ ምንም አለመኖር ነው፦

  • ክፍያዎች። Stripe ያልተሳኩ የደንበኝነት ክፍያዎችን እንደገና ይሞክራል እና ዌብሁኮችን ይልካል፤ እርስዎ ይመልሳሉ እንጂ አይጠይቁም። ዌብሁክ ምንድን ነው ይመልከቱ።
  • ኢሜይል። አቅራቢዎች መልዕክቱን ካስረከቡ በኋላ ማድረስን ወረፋ ያደርጋሉ እና እንደገና ይሞክራሉ።
  • የጅምላ AI ስራ። OpenAI እና Anthropic አስቸኳይ ላልሆኑ ጥያቄዎች ለኋላ የሚሰበስቡት የጅምላ ኤፒአዮች አሏቸው።

ለAI ገንቢዎ የሚሰጡ ትዕዛዞች

ለወረፋ፦

በዳታቤዛችን ውስጥ jobs ሰንጠረዥ (ዓይነት፣ payload JSON፣ ሁኔታ፣ attempts፣ run_after፣ last_error) በመጠቀም የስራ ወረፋ ጨምር። ተጠቃሚ ሲመዘገብ፣ በመስመር ላይ ከመላክ ይልቅ በተመሳሳይ ግብይት ውስጥ send_welcome_email ስራ አስገባ። በSELECT ... FOR UPDATE SKIP LOCKED ጊዜያቸው የደረሰ ስራዎችን የሚወስድ፣ የሚያካሂድና ውድቀቶችን ከ1፣ 5 እና 30 ደቂቃ በኋላ እንደገና የሚሞክር processJobs(limit) ተግባር ጨምር፤ ከ4 ሙከራዎች በኋላ failed ብሎ ምልክት አድርግ።

ለመርሐ-ግብር የተያዘለት ቀስቅሴ፦

POST /api/cron/tick ጨምር፣ በሚስጥር CRON_SECRET የተጠበቀ bearer ቶከን ያለው፤ ቶከን ያለሌለው ጥያቄ ሁሉ ውድቅ ይሁን። እያንዳንዱ ጥሪ processJobs(100) ያካሂድና በሚቀጥሉት 24 ሰዓታት ውስጥ የሚመጡ እና ገና ያልተላኩ የቦታ ማስያዝ ማስታወሻዎችን ይልካል፣ የተላኩትን እንዳይደገም ይመዘግባል። የተካሄደውን የJSON ማጠቃለያ ይመልሱ። ከዚያ ዩአርኤሉንና ቶከኑን ከማከማቻ ሚስጥሮች በማንበብ በየ15 ደቂቃው ይህን ኤንድፖይንት የሚጠራ GitHub Actions ፋይል ጻፍ።

የተለመዱ ስህተቶች

  • በsetInterval መተማመን። ሰርቨሩ ሲተኛ ወይም ዳግም ሲጀምር በጸጥታ ይቆማል፣ ሁለት ቅጂዎች ሲሰሩ ደግሞ በእጥፍ ይሰራል።
  • ያልተጠበቀ cron ኤንድፖይንት። ያገኘው ሁሉ ስራዎችዎን ወይም የኢሜይል ሂሳብዎን ሊያስነሳ ይችላል።
  • ስራዎች እንደገና ቢሰሩ ጉዳት የሌላቸው ያልሆኑ። እንደገና መሞከርና የተባዙ መርሐ-ግብር ጥሪዎች ይከሰታሉ። ለእነሱ ንድፍ ያውጡ።
  • የውድቀት ታይነት የለም። ለአንድ ሳምንት በጸጥታ የሚወድቅ ስራ በግልጽ ከሚወድቅ የከፋ ነው። ስህተቶችን ይመዝግቡ እና ተደጋጋሚ ውድቀቶች ላይ ያሳውቁ።
  • በአንድ ጥያቄ ውስጥ ረጅም ስራ። ጥያቄዎች ጊዜ ያልፍባቸዋል። በቡድን ያካሂዱ።
  • በጣም ብዙ ጊዜ መርሐ-ግብር ማስያዝ። በወደ ዜሮ በሚመዘን አስተናጋጅ ላይ እያንዳንዱ ጥሪ መተግበሪያውን ያነቃል እና ያስከፍላል። ክፍተቱን ከእውነተኛ ፍላጎቱ ጋር አስማሙ።
  • የሰዓት ዞኖች። "9 ሰዓት" ለመርሐ-ግብር ሰጪዎ (ብዙ ጊዜ UTC) እና ለተጠቃሚዎችዎ የተለያየ ትርጉም አለው። ጊዜን በUTC ያስቀምጡ እና ለእያንዳንዱ ተጠቃሚ ይቀይሩ።
  • ሚስጥሮች በስራ ፋይሉ ውስጥ። ቶከኖችን በመርሐ-ግብር ሰጪው የሚስጥር ማከማቻ ያስቀምጡ። የኤፒአይ ቁልፎችን እንዴት መጠበቅ ይመልከቱ።

ዝርዝር

  • ቀርፋፋ ስራ ከተጠቃሚ ጥያቄዎች ተወግዷል
  • ስራዎች በዘላቂነት ይቀመጣሉ፣ በማህደረ ትውስታ ብቻ አይደለም
  • የእየጨመረ ክፍተት ያላቸው ድጋሚ ሙከራዎች እና ከፍተኛ ገደብ
  • እያንዳንዱ ስራ ሁለት ጊዜ ቢሰራ ደህና ነው
  • መርሐ-ግብር የተያዘለት ኤንድፖይንት በሚስጥር ቶከን የተጠበቀ ነው
  • እያንዳንዱ ሩጫ የተወሰነ ቡድን ብቻ ያካሂዳል
  • የወደቁ ስራዎች በማስጠንቀቂያዎች ይታያሉ
  • የመርሐ-ግብር ክፍተት ከማስተናገጃ ወጪ ጋር ተመርጧል
  • ጊዜያት በUTC ይቀመጣሉ

በMythex የጀርባ ስራዎች

የMythex ሰነዶች መርሐ-ግብር የተያዘላቸው ወይም cron ስራዎችን አይገልጹም፣ የታተሙ መተግበሪያዎችና ዳታቤዞቻቸውም ስራ ሲፈቱ ይተኛሉ፣ በቀጣዩ ጥያቄ ይነሳሉ (የማስተናገጃ ገደቦች ይመልከቱ)። ስለዚህ በመተግበሪያዎ ውስጥ ባሉ ሰዓት ቆጣሪዎች ላይ አትተማመኑ። የሚሰራው ከላይ ያለው አካሄድ ነው፦ ለዳታ ሰንጠረዥና በቶከን የተጠበቀ ኤንድፖይንት ወኪሉን ይጠይቁ፣ ከዚያም ውጫዊ መርሐ-ግብር ሰጪ ወደ የታተመው ዩአርኤልዎ ይጠቁሙ። ቶከኑን እንደ የፕሮጀክት ሚስጥር ያስቀምጡ፣ እና እያንዳንዱ መነሳት መተግበሪያውና ዳታቤዙ ለነቁበት ጊዜ ክሬዲት እንደሚያወጣ ያስታውሱ፣ ስለዚህ ምክንያታዊ ክፍተት ይምረጡ። መተግበሪያዎ ለዚህ የኤፒአይ ጀርባ የሚያስፈልገው ከሆነ፣ REST API ጀርባ የምግብ አሰራር መነሻ ነው፣ እና REST API እንዴት መገንባት ኤንድፖይንቶቹን መንደፍን ይሸፍናል። ዋናው ምርትዎ ቋሚ ሂደቶች ወይም ቦቶች ከሆኑ፣ ለቋሚ ሂደቶች የተሰራ አስተናጋጅ ይበልጥ ሊስማማዎ ይችላል።

ጥያቄዎች

የጀርባ ስራ ምንድን ነው?

የጀርባ ስራ ተጠቃሚ እየጠበቀ ካለው ጥያቄ ውጭ መተግበሪያው የሚሰራው ስራ ነው፣ ለምሳሌ ኢሜይል መላክ፣ ምስል መቀየር፣ ሪፖርት ማመንጨት ወይም ዳታ ማመሳሰል። ተጠቃሚው ፈጣን ምላሽ ያገኛል፣ ስራው ደግሞ ለብቻው ይሰራል እና ካልተሳካ እንደገና ሊሞከር ይችላል።

አስተናጋጄ cron ከሌለው መርሐ-ግብር የተያዘለትን ስራ እንዴት ላካሂድ?

ስራውን የሚሰራ በጥበቃ የተጠበቀ ኤንድፖይንት ጨምሩ፣ ከዚያም ውጫዊ መርሐ-ግብር ሰጪ በጊዜ ሰሌዳ እንዲጠራው አድርጉ። አማራጮች፦ የተያዘለት GitHub Actions ስራ፣ የተስተናገደ cron አገልግሎት ወይም የደመና አቅራቢዎ መርሐ-ግብር ሰጪ ናቸው። ኤንድፖይንቱን በሚስጥር ቶከን ጠብቁት።

ለመርሐ-ግብር ስራዎች setInterval ወይም setTimeout መጠቀም እችላለሁ?

ለትናንሽ፣ ብዙም ለማይጠቅሙ ስራዎች ብቻ፣ ሁልጊዜ በሚሰራ ሰርቨር ላይ። ሰርቨሩ ዳግም ቢጀምር፣ ዜሮ ላይ ቢመዘን ወይም ብዙ ቅጂዎች ቢሰሩ፣ ሰዓት ቆጣሪዎቹ ይጠፋሉ ወይም ከአንድ ጊዜ በላይ ይሰራሉ። መርሐ-ግብር የተያዘለት ስራ በዳታቤዝ ያስቀምጡ ወይም መርሐ-ግብር ሰጪ ይጠቀሙ።

Mythex cron ስራዎችን ይደግፋል?

የMythex ሰነዶች መርሐ-ግብር የተያዘላቸው ወይም cron ስራዎችን አይገልጹም፣ የታተሙ መተግበሪያዎችም ስራ ሲፈቱ ይተኛሉ። አስተማማኝው አካሄድ የውጫዊ መርሐ-ግብር ሰጪ በመተግበሪያዎ ውስጥ በጥበቃ የተጠበቀ ኤንድፖይንት መጥራት ነው፣ ይህም መተግበሪያውን ያነቃና ስራውን ያካሂዳል።

Mythex · Pricing · በAI ማንኛውንም ነገር ይገንቡ · የድር ጣቢያ እና የመተግበሪያ ቴምፕሌቶች · Mythex ከሌሎች ጋር ሲነጻጸር · የAI መተግበሪያ ግንባታ የቃላት መዝገበ-ቃላት · ነፃ የAI መተግበሪያ መገንቢያ መሳሪያዎች · English

English العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)