Ho diverse query che devono essere eseguite ogni notte. Pensavo di poter fare quanto segue:
cd /var/discourse
./launcher enter app
su postgres
crontab -e
... aggiungi i miei task e salva ...
ma ottengo un errore:
postgres@EN-Discourse-Forums-app:~$ crontab -e
crontab: installando nuovo crontab
crontab: crontabs/postgres: rename: Operazione non permessa
crontab: modifiche lasciate in /tmp/crontab.7kGYwA/crontab
È possibile farlo?
Falco
(Falco)
4 Ottobre 2019, 7:11pm
2
Il modo più ‘Discourse’ per farlo sarebbe creare un plugin con le query come lavori schedulati.
Controlla questo esempio:
# frozen_string_literal: true
module ::Jobs
class PatreonSyncPatronsToGroups < ::Jobs::Scheduled
every 6.hours
sidekiq_options retry: false
def execute(args)
unless SiteSetting.patreon_enabled && SiteSetting.patreon_creator_access_token &&
SiteSetting.patreon_creator_refresh_token
return
end
::Patreon::Patron.update!
::Patreon.set("last_sync", at: Time.now)
end
end
end
All’interno del blocco execute puoi fare qualsiasi cosa, come questo lavoro che esegue SQL:
Potenzialmente sì, ma questo non permette ad altri che potrebbero aver bisogno di modificare il comportamento di queste query, né ai nostri server, di utilizzare qualcosa che comprendano. È molto comune utilizzare CRON per eseguire query.
Falco
(Falco)
4 Ottobre 2019, 7:18pm
4