Apakah ada perpustakaan penjadwal pekerjaan untuk node.js? [Tutup]


155

Apakah ada perpustakaan seperti cron yang akan membiarkan saya menjadwalkan beberapa fungsi untuk dijalankan pada waktu tertentu (15:30 misalnya, bukan x jam dari sekarang dll)? Jika tidak ada perpustakaan seperti ini bagaimana ini harus diterapkan? Haruskah saya menetapkan panggilan balik untuk dipanggil setiap detik dan memeriksa waktu dan memulai pekerjaan yang dijadwalkan untuk waktu atau apa?


4
node-cron tampaknya menjadi pilihan yang sangat bagus
JtR

var schedule = butuhkan ('node-schedule'); adalah hal terbaik. Bersulang!!!
Saumyajit

Jawaban:


122

node-cron melakukan apa yang saya jelaskan


4
Anda menulis deklarasi cronjob di app.js / scripts.js?
ArVan

apakah node-cron memungkinkan Anda untuk mengedit pekerjaan sistem cron dari node.js? Apakah ini tergantung pada proses simpul yang sedang berjalan? atau apakah itu memungkinkan Anda untuk menjalankan program bahkan setelah proses utama Anda berakhir?
Ajar

5
@ Ajar tidak, setelah penghentian proses nodejs, semua pekerjaan akan hilang. Tidak ada tabel cron yang dikirimkan bersama node-cron
Upvote

1
Saya kira begitu @ ChrisC. Jika saya tidak menggunakan kerangka kerja apa pun, saya menyatakan crons di app.js. In sails.jsI do it inbootstrap
ArVan

2
@arVan jika Anda tertarik, saya benar-benar mulai bekerja agendauntuk menambahkan dukungan Waterline di sini: github.com/mikermcneil/agenda (secara harfiah baru saja dimulai - seharusnya memiliki beberapa kemajuan yang dapat digunakan minggu depan)
mikermcneil

44

node-schedule Penjadwal pekerjaan cron-like dan tidak-cron untuk Node.


2
Ini berhasil menghindari sintaks crontab yang terkadang membingungkan, dan sedikit lebih mudah dibaca menurut pendapat saya.
Simon East

Agenda seperti itu tampaknya akan memberikan ketekunan 0.1.13
drdrej

5
simpul-jadwal tidak memberikan kegigihan. Per dokumen: Note that node-schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes.
Mike Hedman

34

Agenda adalah penjadwalan pekerjaan ringan untuk node. Ini akan membantu Anda.


1
agenda didasarkan pada node-cron dengan lapisan persisten (mongo). jadi jawaban di atas lebih baik.
drdrej

51
Untuk memperjelas, sebagai penulis agenda, sebenarnya tidak didasarkan pada node-cron sama sekali ...
Ryan

1
Perpustakaan agenda adalah satu-satunya perpustakaan terbaik karena pengaturannya sederhana dan penggunaannya mudah bagi pengguna. Kudos @Ryan
Vimalraj Selvam

4
Saya menemukan agendaperilaku yang tidak konsisten dan tidak akan menyarankan untuk menggunakannya. Periksa masalah terbuka dan PR untuk melakukan panggilan Anda sendiri.
Russbear

2
Sadarilah, agenda belum siap produksi. Ini memiliki masalah kebocoran memori dan memeriksa masalah. Masih memiliki banyak bug. Itu terlihat menjanjikan saat siap.
Sebastian

15

later.js adalah pustaka "penjadwal" JavaScript yang cukup bagus. Dapat berjalan di Node.js atau di browser web.


3
Saya mencoba beberapa saran di utas ini, tetapi modul ini saya temukan sebagai fwd yang paling ramah pengguna dan langsung untuk bekerja dengan .. terima kasih!
Gene Bo

12

Saya menggunakan kue: https://github.com/learnboost/kue . Cukup bagus.

Fitur resmi dan komentar saya:

  1. pekerjaan yang tertunda.
    • Jika Anda ingin membiarkan pekerjaan berjalan pada waktu tertentu, hitung milidetik antara waktu itu dan sekarang. Panggil job.delay (milidetik) (Doc mengatakan menit, yang salah.) Jangan lupa menambahkan "jobs.promote ();" ketika Anda init pekerjaan.
  2. acara kerja dan kemajuan pubsub.
    • Saya tidak mengerti.
  3. UI terintegrasi yang kaya.
    • Sangat berguna. Anda dapat memeriksa status pekerjaan (selesai, berjalan, tertunda) di UI terintegrasi dan tidak perlu menulis kode apa pun. Dan Anda dapat menghapus catatan lama di UI.
  4. bergulir tak terbatas
    • Terkadang tidak bekerja. Harus menyegarkan.
  5. Indikasi kemajuan UI
    • Bagus untuk pekerjaan yang menghabiskan waktu.
  6. logging khusus pekerjaan
    • Karena itu adalah pekerjaan yang tertunda, Anda harus mencatat info berguna di pekerjaan itu dan memeriksanya nanti melalui UI.
  7. diberdayakan oleh Redis
    • Sangat berguna. Ketika Anda me-restart aplikasi node.js Anda, semua catatan pekerjaan masih ada dan pekerjaan yang dijadwalkan akan dijalankan juga!
  8. coba ulang opsional
    • Bagus.
  9. kemampuan pencarian teks lengkap
    • Baik.
  10. API JSON yang tenang
    • Kedengarannya bagus, tapi saya tidak pernah menggunakannya.

Edit:

  1. kue bukan perpustakaan seperti cron.
  2. Secara default, kue tidak mendukung pekerjaan yang berjalan berulang kali (mis. Setiap hari Minggu).

6
Kue adalah antrian pekerjaan, bukan penjadwal.
Leonid Beschastny

1
@LeonidBeschastny Kue adalah antrian pekerjaan. Dan ini juga merupakan penjadwal, karena dapat "biarkan saya menjadwalkan beberapa fungsi untuk dijalankan pada waktu tertentu".
Vince Yuan

Saya pikir pekerjaan Kue hanya bisa ditunda, tetapi tidak dijadwalkan untuk waktu tertentu.
Leonid Beschastny

@LeonidBeschastny Anda benar. Kue tidak menyediakan api untuk menjadwalkan pekerjaan pada waktu tertentu. Tetapi seperti yang saya sebutkan, "Jika Anda ingin membiarkan pekerjaan berjalan pada waktu tertentu, hitung milidetik antara waktu itu dan sekarang. Hubungi job.delay (milidetik) (Dokter mengatakan menit, yang salah.)" Ini sangat mudah .
Vince Yuan

1
Anda dapat mencoba kue-scheduler, yang mirip dengan aganda
Fruch

9

node-crontab memungkinkan Anda untuk mengedit pekerjaan cron sistem dari node.js. Menggunakan pustaka ini akan memungkinkan Anda untuk menjalankan program bahkan setelah proses utama Anda berakhir. Penafian: Saya pengembang.


jadi itu tetap ada jika server simpul diatur ulang?
jonperl


Ya, pekerjaan tetap ada.
Blago

GPL-nya berlisensi, jadi tidak bisa digunakan dalam proyek komersial.
drdrej

5
Lisensi sekarang MIT
Blago

8

Anda dapat menggunakan timexe

Mudah digunakan, ringan, tidak memiliki dependensi, memiliki sintaks yang lebih baik daripada cron, dengan resolusi dalam milidetik dan berfungsi di browser.

Install:

npm install timexe

Menggunakan:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(Saya penulisnya)


dapatkah saya mendapatkan beberapa contoh untuk hal ini?
Alex

1
Silakan lihat contoh di github: github.com/paragi/timexe
Simon Rigét

2

Saya adalah auhor dari node-runnr . Ini memiliki pendekatan yang sangat sederhana untuk menciptakan pekerjaan. Juga sangat mudah dan jelas untuk menyatakan waktu dan interval. Misalnya, untuk menjalankan pekerjaan di setiap 10 menit 20sec,

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

Untuk melakukan pekerjaan pada pukul 10:00 dan 15:00 setiap hari,

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

Sesederhana itu. Untuk detail lebih lanjut: https://github.com/Saquib764/node-runnr




0

Ini tidak akan cocok untuk semua orang, tetapi jika aplikasi Anda sudah siap untuk mengambil perintah melalui soket, Anda dapat menggunakan netcat untuk mengeluarkan perintah melalui cron yang tepat.

echo 'mycommand' | nc -U /tmp/myapp.sock
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.