Gocron: حزمة جدولة عمل Golang

Gocron هي حزمة جدولة الوظائف والتي تتيح لك تشغيل وظائف GO على فترات محددة مسبقًا.
إذا كنت ترغب في الدردشة ، يمكنك أن تجدنا في Slack at
بداية سريعة
go get github.com/go-co-op/gocron/v2
package main
import (
"fmt"
"time"
"github.com/go-co-op/gocron/v2"
)
func main () {
// create a scheduler
s , err := gocron . NewScheduler ()
if err != nil {
// handle error
}
// add a job to the scheduler
j , err := s . NewJob (
gocron . DurationJob (
10 * time . Second ,
),
gocron . NewTask (
func ( a string , b int ) {
// do things
},
"hello" ,
1 ,
),
)
if err != nil {
// handle error
}
// each job has a unique id
fmt . Println ( j . ID ())
// start the scheduler
s . Start ()
// block until you are ready to shut down
select {
case <- time . After ( time . Minute ):
}
// when you're done, shut it down
err = s . Shutdown ()
if err != nil {
// handle error
}
}أمثلة
- اذهب لأمثلة DOC
- دليل أمثلة
المفاهيم
- الوظيفة : تعمل المهمة على "مهمة" ، والتي تتكون من وظيفة GO وأي معلمات وظيفة. ثم تزود المهمة الجدول بالوقت الذي يجب أن يتم فيه جدولة المهمة بعد ذلك.
- جدولة : يتتبع المجدول جميع الوظائف ويرسل كل وظيفة إلى المنفذ عندما يكون جاهزًا لتشغيله.
- المنفذ : يدعو المنفذ مهمة الوظيفة ويدير تعقيدات متطلبات توقيت تنفيذ الوظائف المختلفة (مثل المفردات التي لا ينبغي أن تتجاوز بعضها البعض ، مما يحد من عدد أقصى وظائف من الوظائف)
سمات
أنواع الوظائف
يمكن تشغيل الوظائف على فترات مختلفة.
- المدة : يمكن تشغيل الوظائف في
time.Duration محدد. - المدة العشوائية : يمكن تشغيل الوظائف في
time.Duration عشوائي. - CRON : يمكن تشغيل الوظائف باستخدام crontab.
- يوميًا : يمكن تشغيل الوظائف كل أيام X في أوقات محددة.
- أسبوعيًا : يمكن تشغيل الوظائف كل أسابيع X في أيام محددة من الأسبوع وفي أوقات محددة.
- شهريًا : يمكن تشغيل الوظائف كل شهور X في أيام محددة من الشهر وفي أوقات محددة.
- مرة واحدة : يمكن تشغيل الوظائف في وقت (أوقات) محددة (إما مرة أو مرات عديدة).
حدود التزامن
يمكن أن تكون الوظائف محدودة بشكل فردي أو عبر جدولة بأكملها.
- لكل وظيفة الحد من وضع Singleton : يمكن أن تقتصر الوظائف على تنفيذ واحد متزامن إما إعادة الجدولة (تخطي عمليات الإعدام المتداخلة) أو قوائم الانتظار (تنتظر التنفيذ السابق لإنهاء).
- لكل جدولة الحد من وضع الحد : يمكن أن تقتصر الوظائف على عدد معين من عمليات الإعدام المتزامنة عبر المجدول بأكمله باستخدام إما إعادة الجدولة (تخطي عند استيفاء الحد) أو قائمة الانتظار (تتم إضافة الوظائف إلى قائمة انتظار للانتظار حتى يكون الحد الأقصى متاحًا).
- ملاحظة: يمكن تمكين حد جدولة وحد وظيفة.
مثيلات موزعة من Gocron
يمكن تشغيل مثيلات متعددة من Gocron.
- الناخب : يمكن استخدام الناخب لانتخاب مثيل واحد من GoCron لتشغيله كبارٍ مع الحالات الأخرى التي تتحقق لمعرفة ما إذا كان هناك حاجة إلى قائد جديد.
- التطبيقات: ناخبي Go-Co-op (لا ترى ما تحتاجه؟ طلب على Slack للحصول على إعادة إنشاؤه للمساهمة!)
- الخزانة : يمكن استخدام الخزانة لقفل كل وظيفة من وظيفة إلى مثيل واحد من Gocron. يمكن أن يكون Locker في الوظيفة أو الجدولة ، إذا تم تعريفه في كل من Job and Scheduler ، فإن Locker of Job ستتخذ الأسبقية.
- التطبيقات: خزانات Go-Co-op (لا ترى ما تحتاجه؟ طلب على Slack للحصول على ريبو تم إنشاؤه للمساهمة به!)
الأحداث
أحداث الوظائف يمكن أن تؤدي إلى إجراءات.
- المستمعون : يمكن إضافتها إلى وظيفة ، مع مستمعي الأحداث ، أو جميع الوظائف عبر المجدول للاستماع إلى أحداث الوظائف وإجراءات التشغيل.
خيارات
تتوفر العديد من خيارات الوظائف والجدولة.
- خيارات الوظائف : يمكن تعيين خيارات الوظائف عند إنشاء وظيفة باستخدام
NewJob . - خيارات الوظائف العالمية : يمكن تعيين خيارات الوظائف العالمية عند إنشاء جدولة باستخدام
NewScheduler وخيار WithGlobalJobOptions . - خيارات الجدولة : يمكن تعيين خيارات الجدولة عند إنشاء جدولة باستخدام
NewScheduler .
قطع الأشجار
يمكن تمكين السجلات.
- المسجل: يمكن تنفيذ واجهة المسجل مع مكتبة التسجيل المطلوبة. يستخدم NewLogger المقدم حزمة سجل المكتبة القياسية.
المقاييس
يمكن جمع المقاييس من تنفيذ كل وظيفة.
- شاشة :
- MonitorStatus (يتضمن الحالة والخطأ (إن وجد) من المهمة) يمكن استخدام شاشة لجمع المقاييس لكل وظيفة من جدولة.
- التطبيقات: شاشات GO-CO-OP (لا ترى ما تحتاجه؟ طلب على Slack للحصول على إعادة إنشاؤه للمساهمة!)
الاختبار
تم إعداد مكتبة Gocron لتمكين الاختبار.
- يتم توفير Mocks في الحزمة الوهمية باستخدام Gomock.
- يمكن أن يسخر الوقت عن طريق المرور في fakeClock إلى WithClock - انظر المثال على WithClock.
المؤيدون
نحن نقدر الدعم لبرنامج مجاني ومفتوح المصدر!
هذا المشروع مدعوم من:
Jetbrains
خفير
تاريخ النجوم