Orbit
Orbit Cron Jobs
Cron jobs schedule recurring HTTP requests to your deployed project, so a nightly cleanup, an hourly sync or a weekly digest runs on time without you standing up a separate scheduler.
Cron जॉब्स आपके deployed प्रोजेक्ट को recurring HTTP requests schedule करते हैं, ताकि रात्रि में cleanup, hourly sync या weekly digest बिना किसी अलग scheduler के समय पर चले।
Cron Jobs कहाँ हैं
Orbit खोलें, प्रोजेक्ट पर क्लिक करें, और प्रोजेक्ट tab strip में Configure group के अंतर्गत Crons चुनें। यह पृष्ठ Cron jobs शीर्षक वाला है और बताता है कि यह क्या करता है: UTC में standard five-field cron syntax का उपयोग करके, या aliases @hourly, @daily, @weekly और @monthly का उपयोग करके आपके production deployment को HTTP requests schedule करें।
यह पृष्ठ Target host दिखाता है जिसे यह call करेगा, ताकि आप एक नजर में confirm कर सकें कि यह सही deployment की ओर इशारा कर रहा है।

यह कैसे काम करता है
Orbit आपके code को scheduler में नहीं चलाता। यह एक schedule पर आपके प्रोजेक्ट पर एक URL call करता है, और आपका code काम करता है।
इसका अर्थ है कि जो चीज़ आप schedule करते हैं वह आपके application में एक ordinary route है, उदाहरण के लिए /api/cron/cleanup। कुछ भी जो आपका app request के response में कर सकता है, वह एक schedule पर कर सकता है।
Cron Job बनाना
- New cron पर क्लिक करें।
- इसे एक Name दें, 120 characters तक।
- अपने प्रोजेक्ट पर Path सेट करें, एक slash से शुरू करते हुए।
- presets से एक Schedule चुनें या एक expression type करें।
- एक Method चुनें।
GETdefault है। - अगर method POST, PUT या PATCH है तो एक Request body जोड़ें।
- एक Timeout सेट करें 1 और 300 seconds के बीच। Default 30 है।
- जब तक आपके पास अपना auth न हो तब तक Generate a Bearer secret option को ticked रखें।
- Create cron पर क्लिक करें।
Schedule Presets
| Preset | Expression |
|---|---|
| हर 5 मिनट | */5 * * * * |
| हर 15 मिनट | */15 * * * * |
| Hourly | @hourly |
| Daily 09:00 UTC | 0 9 * * * |
| Daily midnight | @daily |
| Weekly Mon 09:00 | 0 9 * * 1 |
| Monthly 1st | @monthly |
या अपना अपना five-field expression लिखें: minute, hour, day of month, month, day of week।
सभी schedules UTC हैं, daylight saving adjustment के बिना। 0 9 * * * के लिए सेट किया गया एक job साल भर 9am UTC पर चलता है, जो साल में दो बार New Zealand time के विरुद्ध एक घंटा drift करता है। अगर एक job को एक specific local time पर चलना चाहिए, तो UTC hour को deliberately चुनें और नोट करें कि आपने वर्ष का कौन सा आधा optimize किया है।
Call को Authenticate करना
Bearer secret option को ticked रखने से एक random token generate होता है जो every execution पर एक Authorization header के रूप में भेजा जाता है। यह creation के तुरंत बाद एक बार दिखाया जाता है, एक नोट के साथ कि यह दोबारा नहीं दिखाया जाएगा।
इसे copy करें और अपने handler में check करें:
export async function GET(req) {
const auth = req.headers.get('authorization');
if (auth !== `Bearer ${process.env.CRON_SECRET}`) {
return new Response('Unauthorized', { status: 401 });
}
// do the work
}
project के environment variables का उपयोग करके secret को store करें: Orbit में Environment Variables देखें।
इस तरह का check किए बिना, आपका cron path एक public URL है जिसे कोई भी जितनी बार चाहे call कर सकता है। यह कुछ harmless के लिए ठीक है और कुछ serious के लिए जो लिखता है, email भेजता है या पैसा खर्च करता है। पहली बार चलाने से पहले check जोड़ें, न कि किसी के endpoint को खोजने के बाद।
आप अपने अपने headers भी भेज सकते हैं, अगर आपके application के पास पहले से ही एक authentication scheme है।
Job List को पढ़ना
प्रत्येक job दिखाता है:
- Schedule, वह expression जिस पर यह चलता है।
- Next, यह फिर से कब चलेगा।
- Last, यह कब last चला और कैसा रहा।
- एक ok / fail counter।
- Last error, जहाँ सबसे हाल की failure ने एक message छोड़ा।
- एक PAUSED badge जब यह switch off हो।
चार actions प्रत्येक row पर बैठते हैं: Run now, Pause या Resume, और Delete।
Run now job को तुरंत execute करता है, इसके schedule की परवाह किए बिना, और outcome report करता है। यह एक नई job को test करने का सही तरीका है बजाय next tick की प्रतीक्षा करने के।
Execution Outcomes
| Status | Meaning |
|---|---|
| OK | आपके endpoint ने एक success response return किया |
| FAILED | आपके endpoint ने एक error return किया, या request नहीं बनाई जा सकी |
| TIMEOUT | आपके endpoint ने timeout के अंदर respond नहीं किया |
| SKIPPED | execution नहीं चला |
प्रत्येक execution को इसके status, response code, duration, error और क्या इसे trigger किया के साथ record किया जाता है, इसलिए एक job जो intermittently fail होती है वह एक trail छोड़ती है जिसे आप read कर सकते हैं एक single "last error" की बजाय।
Timeout चुनना
Timeout प्रति execution है, 1 और 300 seconds के बीच, 30 को default करते हुए।
इसे job के real worst case के थोड़ा ऊपर सेट करें, बहुत ऊपर नहीं। एक generous timeout एक job पर जो hang हो गया है का अर्थ है एक builder का five minutes कुछ भी नहीं पर waiting करने के। एक tight timeout एक job पर जो legitimately two minutes लेती है का अर्थ है एक permanent failure और एक misleading alert।
बेहतर अभी भी, handler को fast रखें: काम को enqueue करें और तुरंत return करें, काम को inline करने की बजाय। एक cron job जो 200 milliseconds में return होती है कभी timeout नहीं होती।
Limits
एक project 50 cron jobs तक hold कर सकता है। यह प्रति project है, इसलिए कई projects वाले account के पास total में अधिक हैं।
अगर आपको production की बजाय staging के विरुद्ध कुछ schedule करना है, तो Settings में Cron triggers का उपयोग करें। वह card आपको environment pick करने देता है, और प्रति project दस triggers पर capped है। Orbit Project Settings देखें।
Job को Delete करना
Delete पर क्लिक करें और confirm करें। confirmation नोट करता है कि execution history भी remove किया जाएगा, इसलिए अगर आप एक record रखना चाहते हैं कि एक job कैसे behave करती है, तो delete करने से पहले इसे capture करें।
Delete की बजाय Pause करें जब आप temporarily एक job को stop कर रहे हों। Pausing configuration, secret और history को intact रखता है।
Practical Advice
Handlers को idempotent बनाएं। एक cron call को retry किया जा सकता है, और Run now को दबाया जा सकता है जबकि एक scheduled run पहले से ही in progress हो। आपका handler दो बार चलने के साथ cope करना चाहिए बिना काम को दो बार किए।
हर घंटे सब कुछ schedule न करें। हर job पर 0 * * * * का अर्थ है हर job एक ही समय पर compete करने वाली। उन्हें spread करें: 7 * * * *, 23 * * * *, और इसी तरह।
अपने handler के अंदर log करें। execution record आपको response code और duration बताता है। क्या actually हुआ यह आपके application का business है, और आप इसे चाहेंगे जब एक job silently कुछ नहीं करती।
Troubleshooting
हर execution FAILED है एक 401 के साथ। आपका handler request को reject कर रहा है। Check करें कि आपके environment variables में stored secret यहाँ generated एक से match करता है, comparison में Bearer prefix सहित।
हर execution FAILED है एक 404 के साथ। path deployed project पर exist नहीं करता। इसे target host के विरुद्ध एक browser में test करें जो page पर दिखाया गया है।
Executions TIMEOUT होते हैं। handler inline बहुत कुछ कर रहा है। काम को split करें, या timeout को raise करें अगर काम genuinely उतना समय लेता है और एक runaway नहीं है।
Next कभी advance नहीं होता। job paused है। PAUSED badge को देखें।
Job गलत समय पर चलती है। UTC को अपने local time के विरुद्ध check करें। यह scheduled jobs के साथ सबसे common surprise है।
अगले कहाँ जाएं
- Orbit में Environment Variables cron secret को store करने के लिए।
- Orbit Project Settings per-environment cron triggers के लिए।
- Orbit Webhooks को जब बातें गलत हों तो बताने के लिए।