Quindi ho un plugin che avvia Ansible per eseguire un’installazione di Discourse (vorrei davvero, davvero, smettere di usare WordPress per gestire gli ordini di installazione!).
Inizialmente, chiamavo fork per avviarla, il che funzionava bene nei test, ma pensavo che dovessi farlo in modo più “alla maniera di Discourse”.
Quindi ho creato un lavoro una tantum per eseguire il processo, ma viene terminato in questo modo:
Ho provato ad aggiungere sidekiq_options queue: 'low' alla classe, e poi alla funzione che esegue il lavoro.
Poi ho saltato l’esecuzione del processo tramite il lavoro e l’ho eseguito direttamente nel modello con
Discourse::Utils.execute_command(*instructions)
Funziona perfettamente se lo eseguo da rails c, ma in qualsiasi altro modo lo esegua (questo è un ambiente di sviluppo Ubuntu, avviato con ./bin/unicorn), viene terminato.
I lavori una tantum sono lavori che vengono eseguiti, beh, una sola volta. Sembra che tu abbia bisogno di un lavoro regolare che venga schedulato da un trigger, come una richiesta che colpisce un controller.
I lavori regolari possono durare più di 60 secondi, come alcuni fanno nell’uso normale.