Tengo varias consultas que deben ejecutarse cada noche. Pensé que podría hacer lo siguiente:
cd /var/discourse
./launcher enter app
su postgres
crontab -e
... agregar mis tareas y guardar ...
pero obtengo un error:
postgres@EN-Discourse-Forums-app:~$ crontab -e
crontab: instalando nueva crontab
crontab: crontabs/postgres: rename: Operación no permitida
crontab: ediciones dejadas en /tmp/crontab.7kGYwA/crontab
¿Es esto posible?
Falco
(Falco)
4 Octubre, 2019 19:11
2
La forma más «al estilo Discourse» de hacerlo sería crear un plugin con las consultas como tareas programadas.
Consulta este ejemplo:
# 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
Dentro del bloque execute puedes hacer cualquier cosa, como en este trabajo que ejecuta SQL:
Potencialmente, sí, pero esto no permite que otros, que pueden necesitar cambiar el comportamiento de estas consultas, y nuestros servidores utilicen algo que entiendan. Es muy común usar CRON para ejecutar consultas.
Falco
(Falco)
4 Octubre, 2019 19:18
4