GOCRON: Paket Penjadwalan Pekerjaan Golang

GOCRON adalah paket penjadwalan pekerjaan yang memungkinkan Anda menjalankan fungsi GO pada interval yang telah ditentukan.
Jika Anda ingin mengobrol, Anda dapat menemukan kami di Slack at
Awal yang cepat
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
}
}Contoh
- GO CONTOH DOC
- Contoh Direktori
Konsep
- Pekerjaan : Pekerjaan merangkum "tugas", yang terdiri dari fungsi GO dan parameter fungsi apa pun. Pekerjaan itu kemudian memberikan penjadwal waktu pekerjaan harus dijadwalkan untuk dijalankan.
- Penjadwal : Penjadwal melacak semua pekerjaan dan mengirim setiap pekerjaan ke pelaksana ketika siap dijalankan.
- Pelaksana : Pelaksana memanggil tugas pekerjaan dan mengelola kompleksitas persyaratan waktu eksekusi pekerjaan yang berbeda (misalnya singleton yang tidak boleh saling menguasai, membatasi jumlah pekerjaan maksimal yang berjalan)
Fitur
Jenis pekerjaan
Pekerjaan dapat dijalankan pada berbagai interval.
- Durasi : Pekerjaan dapat dijalankan pada
time.Duration yang tetap. - Durasi acak : Pekerjaan dapat dijalankan pada
time.Duration acak. Durasi antara min dan maks. - Cron : Pekerjaan dapat dijalankan menggunakan crontab.
- Harian : Pekerjaan dapat dijalankan setiap x hari pada waktu tertentu.
- Mingguan : Pekerjaan dapat dijalankan setiap x minggu pada hari -hari tertentu dalam seminggu dan pada waktu tertentu.
- Bulanan : Pekerjaan dapat dijalankan setiap x bulan pada hari -hari tertentu dalam sebulan dan pada waktu tertentu.
- Satu kali : Pekerjaan dapat dijalankan pada waktu tertentu (baik sekali atau berkali -kali).
Batas konkurensi
Pekerjaan dapat dibatasi secara individu atau di seluruh penjadwal.
- Per pekerjaan yang membatasi dengan Singleton Mode : Jobs dapat dibatasi pada satu eksekusi bersamaan yang menjadwalkan ulang (melompati eksekusi yang tumpang tindih) atau antrian (menunggu eksekusi sebelumnya untuk menyelesaikan).
- Per penjadwal yang membatasi dengan mode batas : Pekerjaan dapat dibatasi pada sejumlah eksekusi bersamaan di seluruh penjadwal menggunakan penjadwalan ulang (lewati saat batas dipenuhi) atau antrian (pekerjaan ditambahkan ke antrian untuk menunggu batas yang tersedia).
- Catatan: Batas penjadwal dan batasan pekerjaan keduanya dapat diaktifkan.
Contoh Gokron Terdistribusi
Beberapa contoh gokron dapat dijalankan.
- Pemilih : Seorang pemilih dapat digunakan untuk memilih satu contoh gokron untuk dijalankan sebagai yang utama dengan contoh lain memeriksa untuk melihat apakah pemimpin baru perlu dipilih.
- Implementasi: Pemilih GO-OP (tidak melihat apa yang Anda butuhkan? Permintaan Slack untuk membuat repo dibuat untuk berkontribusi!)
- Locker : Loker dapat digunakan untuk mengunci setiap menjalankan pekerjaan untuk satu contoh gokron. Locker dapat bekerja atau penjadwal, jika didefinisikan baik di pekerjaan dan penjadwal maka loker pekerjaan akan diutamakan.
- Implementasi: GO-CO-OP LOCKERS (tidak melihat apa yang Anda butuhkan? Permintaan Slack untuk mendapatkan repo yang dibuat untuk berkontribusi!)
Acara
Acara pekerjaan dapat memicu tindakan.
- Pendengar : Dapat ditambahkan ke pekerjaan, dengan pendengar acara, atau semua pekerjaan di seluruh penjadwal untuk mendengarkan acara kerja dan memicu tindakan.
Opsi
Banyak opsi pekerjaan dan penjadwal tersedia.
- Pilihan Pekerjaan : Pilihan pekerjaan dapat diatur saat membuat pekerjaan menggunakan
NewJob . - Opsi Pekerjaan Global : Opsi pekerjaan global dapat ditetapkan saat membuat penjadwal menggunakan
NewScheduler dan opsi WithGlobalJobOptions . - Opsi Penjadwal : Opsi penjadwal dapat diatur saat membuat penjadwal menggunakan
NewScheduler .
Logging
Log dapat diaktifkan.
- Logger: Antarmuka logger dapat diimplementasikan dengan perpustakaan logging yang Anda inginkan. Newlogger yang disediakan menggunakan paket log perpustakaan standar.
Metrik
Metrik dapat dikumpulkan dari pelaksanaan setiap pekerjaan.
- Monitor :
- Monitorstatus (termasuk status dan kesalahan (jika ada) pekerjaan) monitor dapat digunakan untuk mengumpulkan metrik untuk setiap pekerjaan dari penjadwal.
- Implementasi: monitor go-op (tidak melihat apa yang Anda butuhkan? Permintaan Slack untuk membuat repo dibuat untuk berkontribusi!)
Pengujian
Perpustakaan Gokron diatur untuk mengaktifkan pengujian.
- Mocks disediakan dalam paket tiruan menggunakan Gomock.
- Waktu dapat diejek dengan lewat di fakeclock ke withclock - lihat contohnya dengan withclock.
Pendukung
Kami menghargai dukungan untuk perangkat lunak sumber gratis dan terbuka!
Proyek ini didukung oleh:
JetBrains
Penjaga
Sejarah Bintang