Node.js için bir iş zamanlayıcı kitaplığı var mı? [kapalı]


155

Bazı işlevleri belirli bir zamanda çalıştırılacak şekilde zamanlamamı sağlayan bazı cron kütüphanesi var mı? Bu tür bir kütüphane yoksa, bu nasıl uygulanmalıdır? Geri aramayı her saniye aranacak şekilde ayarlamalı mıyım ve zamanı kontrol etmeli ve zamana ya da ne için planlanan işe başlamalıyım?


4
node-cron çok iyi bir seçenek gibi görünüyor
JtR

var zamanlama = requir ('düğüm-zamanlama'); en iyi şeydir. şerefe !!!
Saumyajit

Yanıtlar:


122

node-cron tam olarak tarif ettiğim şeyi yapıyor


4
cronjob bildirimlerini app.js / scripts.js dosyasına yazar mısınız?
ArVan

yok düğüm-Cron node.js gelen düzenleme sistemi cron işleri için izin? Çalışan düğüm işlemine bağlı mı? veya ana işleminiz sona erdikten sonra bile programları çalıştırmanıza izin verecek mi?
Ajar

5
@Ajar no, nodejs işleminin sona ermesinden sonra tüm işler kaybedilecektir. Node-cron ile birlikte gönderilen cron tablo yok
Olumlu oy

1
Sanırım @ChrisC. Eğer herhangi bir çerçeve kullanmıyorsam, içinde crons ilan ediyorum app.js. İçinde sails.jsyapıyorumbootstrap
ArVan

2
@arVan ilgileniyorsanız, aslında agendaburaya Waterline desteği eklemek için çalışmaya başladım : github.com/mikermcneil/agenda (kelimenin tam anlamıyla yeni başlamıştı - gelecek haftaya kadar bazı kullanılabilir ilerlemeler olmalı)
mikermcneil

44

düğüm zamanlama Düğüm için cron benzeri ve cron benzeri olmayan bir iş zamanlayıcı.


2
Bu bazen kafa karıştırıcı crontab sözdiziminden kaçınmayı başarıyor ve bence biraz daha okunabilir.
Simon East

gündem gibi kalıcılık sağlamak için dikişler
0.1.13

5
düğüm-çizelgesi kalıcılık sağlamaz. Dokümanlar başına: 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

gündem , düğüm için hafif bir iş çizelgesidir. Bu sana yardım edecek.


1
gündemi, kalıcı bir katmana (mongo) sahip düğüm-cron'a dayanır. bu yüzden yukarıdaki cevap daha iyi.
drdrej

51
Açıklamak için, gündemin yazarı olarak, aslında hiç düğüm-
Ryan

1
Gündem kütüphanesi, kurulum basit ve kullanıcı için kullanımı kolay olduğu için tek ve en iyi kütüphanedir. Kudos @Ryan
Vimalraj Selvam

4
agendaTutarsız bir davranışa sahip olduğumu buldum ve bunu kullanmanızı tavsiye etmem. Kendi aramalarınızı yapmak için açık sorunları ve PR'ları kontrol edin.
Russbear

2
farkında olun, gündem üretime hazır değil. It has bellek sızıntısı sorunlarını ve sorunlar için çek. Hala çok hata var. Hazır olduğunda umut verici görünüyor.
Sebastian

15

later.js oldukça iyi bir JavaScript "zamanlayıcı" kütüphanesidir. Node.js üzerinde veya bir web tarayıcısında çalışabilir.


3
Bu iş parçacığında birkaç öneri denedim, ama bu modül ile çalışmak için en kullanıcı dostu ve düz fwd bulundu .. teşekkürler!
Gene Bo

12

Kue kullanıyorum: https://github.com/learnboost/kue . Çok güzel.

Resmi özellikler ve yorumlarım:

  1. gecikmiş işler.
    • İşin belirli bir zamanda çalışmasına izin vermek istiyorsanız, o zaman ile şimdi arasındaki milisaniyeyi hesaplayın. Job.delay (milisaniye) çağırın (Doküman dakikalar diyor, bu yanlış.) "Jobs.promote ();" eklemeyi unutmayın. işleri başlattığında.
  2. iş olayı ve ilerleme pubsub.
    • Anlamıyorum.
  3. zengin tümleşik kullanıcı arayüzü.
    • Çok kullanışlı. Entegre kullanıcı arayüzünde iş durumunu (bitti, çalışıyor, gecikmeli) kontrol edebilirsiniz ve herhangi bir kod yazmanıza gerek yoktur. Kullanıcı arayüzündeki eski kayıtları silebilirsiniz.
  4. sonsuz kaydırma
    • Bazen çalışmıyor. Yenilemek zorunda.
  5. UI ilerleme durumu göstergesi
    • Zaman alan işler için iyi.
  6. işe özel günlük kaydı
    • Gecikmeli işler oldukları için, işe yararlı bilgiler kaydetmeli ve daha sonra kullanıcı arayüzü üzerinden kontrol etmelisiniz.
  7. Tarafından desteklenmektedir Redis
    • Çok kullanışlı. Node.js uygulamanızı yeniden başlattığınızda, tüm iş kayıtları hala oradadır ve zamanlanan işler de yürütülecektir!
  8. isteğe bağlı yeniden deneme
    • Güzel.
  9. tam metin arama özellikleri
    • İyi.
  10. RESTful JSON API'sı
    • Kulağa hoş geliyor, ama asla kullanmıyorum.

Düzenle:

  1. kue cron benzeri bir kütüphane değildir.
  2. Varsayılan olarak, kue art arda çalışan işi desteklemez (örn. Her Pazar).

6
Kue bir iş kuyruğu, zamanlayıcı değil.
Leonid Beschastny

1
@LeonidBeschastny Kue bir iş kuyruğu. Ve bu aynı zamanda bir programlayıcıdır, çünkü "bir işlevi belirli bir zamanda çalıştırılmak üzere planlamama izin verebilir".
Vince Yuan

Kue işlerinin sadece ertelenebileceğini, ancak belirli bir zamanda planlanamayacağını düşündüm.
Leonid Beschastny

@LeonidBeschastny Haklısın. Kue, bir işi belirli bir zamana programlamak için api sağlamaz. Ama dediğim gibi, "Eğer işin belirli bir zamanda çalışmasına izin vermek istiyorsanız, o zaman ile şimdiki zaman arasındaki milisaniyeyi hesaplayın. .
Vince Yuan

1
Sen aganda benzer kue-zamanlayıcı deneyebilirsiniz
Fruch

9

node-crontab , sistem cron işlerini node.js'den düzenlemenizi sağlar. Bu kütüphaneyi kullanmak, ana işleminiz sona erdikten sonra bile programları çalıştırmanıza izin verecektir. Feragatname: Ben geliştiriciyim.


bu yüzden düğüm sunucusu sıfırlanırsa devam eder?
jonperl


Evet, işler devam ediyor.
Blago

GPL lisanslıdır, bu nedenle ticari bir projede kullanılamaz.
drdrej

5
Lisans şimdi MIT
Blago

8

Timexe kullanabilirsiniz

Kullanımı basit, hafif, bağımlılığı yoktur, cron üzerinde geliştirilmiş bir sözdizimi vardır, milisaniye cinsinden bir çözünürlük ve tarayıcıda çalışır.

Yüklemek:

npm install timexe

kullanın:

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

(Ben yazarım)


bunun için bir örnek alabilir miyim lütfen?
Alex


2

Ben düğüm-runnr'ın efendisiyim . İş yaratmak için çok basit bir yaklaşımı var. Ayrıca zaman ve aralık bildirmek çok kolay ve net. Örneğin, her 10 dakikada bir 20 saniyede bir iş yapmak için,

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

Her gün 10:00 ve 15:00 saatleri arasında iş yapmak,

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

Bu kadar basit. Daha fazla ayrıntı için: https://github.com/Saquib764/node-runnr




0

Bu herkes için uygun olmayacaktır, ancak uygulamanız zaten bir soket aracılığıyla komut almak üzere ayarlanmışsa, cron üzerinden bir komut vermek için netcat'i kullanabilirsiniz.

echo 'mycommand' | nc -U /tmp/myapp.sock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.