Domanda

Mi chiedo, se c'è un modo per implementare compiti di sfondo, magari con la piscina dei lavoratori.Puoi mostrarmi la direzione, sto pensando a scrivere il pacchetto per questo?

È stato utile?

Soluzione

Aggiornamento 2019

Prima di pensare di scrivere un pacchetto per qualsiasi cosa, il primo aspetto se ci sono pacchetti esistenti che fanno ciò di cui hai bisogno. Nel mondo di Meteor, questo significa guardare l'atmosfera per "lavori / coda / attività / gestione / gestione / pianificazione" pacchetti, quindi su NPM per gli stessi termini di ricerca. Devi anche definire i tuoi requisiti più precisamente:

    .
  • vuoi perseverare o una soluzione in-memoria funziona?
  • Vuoi essere in grado di distribuire lavori a macchine diverse?

Meteor-specific

    .
  • Collezione di lavoro - affidabile (l'ho usato nel 2014 in produzione a Un avvio), ma attualmente in modalità manutenzione. Consente di pianificare lavori persistenti da eseguire ovunque (server, client).
  • Stevejobs - Mantenuto attivamente da Max Savin, l'autore di diversi Potenti strumenti Meteor
  • Littlatata: Syncry-Cron - "Un semplice sistema di cron per Meteor. Supporta i lavori di sincronizzazione tra più processi. "

Pacchetti abbandonati:

Pacchetti NPM

Meteor è stato in grado di utilizzare i pacchetti NPM direttamente da diversi anni, quindi questa domanda equivale a trovare Pacchetti di lavoro / lavoratore / coda su NPM. Se non ti importa della persistenza:

    .
  • asinnc "fornisce circa 70 funzioni che includono i soliti sospetti" funzionali "(map, reduce, filter, each ...) e alcuni modelli comuni per flusso di controllo asincrono (parallel, series, waterfall ...) "
  • D3-code - minimalistic, scritto da D3 Autore Mike Bostock

Se vuoi perseverare, poiché Meteor utilizza già MongoDB, potrebbe essere vantaggioso utilizzare un pacchetto di pianificazione del lavoro con persistenza a mongodb. Il più potente e popolare sembra essere Agenda , ma sfortunatamente non è stato mantenuto in mesi, e Ha un arretrato significativo di problemi .

Se sei disposto ad aggiungere una dipendenza sostenuta da redis al tuo progetto, ci sono più scelte: < / P >.

RRer "> Kue - Coda di lavoro prioritaria per il nodo

Come Mongodb, Redis può anche fornire la disponibilità di alta disponibilità (via Redis Sentinel) e se si desidera distribuire posti di lavoro tra più macchine di lavoro, è possibile Punta tutti nello stesso server Redis .

Altri suggerimenti

Esiste un pacchetto basato su lavori di cron che possono essere utilizzati per pianificare attività su determinati intervalli o date.Ecco il pacchetto: https://atmosphere.meteor.com/package/cron E se ti capita di esaminare la fonte di quel pacchetto, noterai semplicemente usando:

Meteor.setInterval( ... , delay );

Quindi se si salvano le attività in un database, quindi caricarli in intervalli durante l'avvio, allora probabilmente sarai sulla strada giusta.

Se stai cercando qualcosa che è specifico per Meteor, sono felice di condividere che c'è un nuovo pacchetto chiamato Steve Jobs.Rende il funzionamento dei lavori in background come chiamare un metodo.

ha tutte le funzionalità standard che ti aspetteresti, ad esempio l'esecuzione di un lavoro solo una volta, riprovare i lavori falliti e così via.Puoi saperne di più su di esso su GitHub:

http://github.com/msAvin/stevejobs

Indovina che il supporto corretto sia sulla loro tabella di marcia, ma nel frattempo sono riuscito a farlo entrare in modo hacky tramite setInterval.Vedi il Cron-tick pacchetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top