2016-06-02 9 views
5

In Hangfire, ho impostato correttamente i lavori ricorrenti e sono in grado di attivarlo manualmente se lo desidero, grazie all'interfaccia utente Web e al relativo pulsante "Trigger".Impostare un lavoro "su richiesta" in HangFire

RecurringJob.AddOrUpdate(..); 

enter image description here

Ma io sono disposto a impostare un lavoro che non viene mai licenziato automaticamente. Solo su richiesta da WebUi. Consideralo come un insieme di attività di manutenzione che vengono attivate solo quando necessario. Manualmente.

Stavo pensando di aggiungere un lavoro non recidivo nello stato di attesa, ma non è stato in grado (e sembra sbagliato).

I lavori "Solo su richiesta" sono possibili con Hangfire?

+3

Quello che faccio è avere un controller per l'attivazione di posti di lavoro. Crea una pagina di amministrazione con un pulsante che richiama un'azione che accoda il lavoro. – aethercowboy

+1

@Rob La soluzione "31 febbraio" non funziona, sfortunatamente. Hangfire genera un'eccezione apparentemente durante il tentativo di trovare la data di calendario effettiva successiva corrispondente all'espressione (e termina con l'esecuzione dell'anno passato 9999 durante la ricerca di una data simile). (A partire da Hangfire v1.6.4) –

+1

@JonSchneider Questo è un peccato! Non credo di averlo provato, ho solo creduto che potesse valere poco, visto che utilizza la notazione della cron tab. Rimuoverò il commento in modo da non portare fuori strada le persone in futuro – Rob

risposta

1

Sì, i lavori su richiesta sono interamente possibili con il riaccendersi. È possibile attivare fire-and-forget posti di lavoro utilizzando il seguente: (? Forse dopo uno scatto del tasto)

BackgroundJob.Enqueue(
() => Console.WriteLine("Simple!")); 

Questo però non apparirà nel cruscotto hangfire, ma è possibile utilizzare questo frammento di codice nel codice

4

Io uso questa espressione CRON come Mai: 0 0 29 2/12000 WED A mezzanotte, il 29 di febbraio è un mercoledì, ogni secolo.

2

Manuale o "su richiesta" non sono ancora stati implementati nel trunk principale. Comunque puoi use this fork avere questa opzione.

Attualmente questo è contrassegnato come Work in Progress in Hangfire's repo e si può usare come questo:

BackgroundJob.Stash(() => Console.WriteLine("STASHING")); 

Un approccio diverso menzionato in uno dei commenti è di avere da qualche parte nel vostro sito un pulsante che accoda il lavoro:

BackgroundJob.Enqueue(() => Console.WriteLine("Simple!")); 

EDIT: 2017/12/28:

A quanto pare la forcella precedente wont essere fuse indietro da allora questa estensione supporta già al lavoro coda manualmente:

Hangfire.Core.Dashboard.Management

enter image description here

Problemi correlati