Preguntas técnicas frecuentes¶
«Las acciones planificadas no se ejecutan en el momento exacto en que se esperaban»¶
No podemos garantizar un tiempo de ejecución exacto para las acciones planificadas en la plataforma de Odoo.sh.
Es posible que haya varios clientes en el mismo servidor y debemos garantizar que cada uno de ellos tenga una porción justa del servidor. La ejecución de las acciones programadas es algo diferente a la manera en que se haría en un servidor regular de Odoo y se ejecutan con la política de mejor esfuerzo.
Advertencia
No espere que ninguna acción planificada se ejecute con una frecuencia mayor a cada 5 minutos.
¿Hay «mejores prácticas» relacionadas con las acciones planificadas?¶
Odoo.sh siempre limita el tiempo de ejecución de las acciones planificadas (*también conocidas como* crons), así que debe tener esto en cuenta cuando desarrolle sus propios crons.
Le aconsejamos lo siguiente:
Sus acciones planificadas deben trabajar en pequeños lotes de registros.
Sus acciones planificadas deben confirmar su trabajo después de procesar cada lote, de esta forma no será necesario que vuelva a empezar si el límite de tiempo las interrumpe.
Sus acciones planificadas deben ser idempotentes. No deben causar efectos secundarios si se activan con más frecuencia de la prevista.
¿Cómo puedo automatizar tareas cuando ocurre un cambio de dirección IP?¶
Odoo.sh le notifica a los administradores del proyecto si hay cambios en la dirección IP. Además, cuando la dirección IP de una instancia de producción cambia, se realiza una petición HTTP GET
en la ruta /_odoo.sh/ip-change
con la nueva dirección IP incluida como un parámetro de cadena de consulta (new
) junto con la dirección IP anterior como un parámetro adicional (old
).
Este mecanismo permite que pueda aplicar acciones personalizadas como respuesta al cambio de dirección IP (por ejemplo, enviar un correo electrónico, contactar a una API de firewall, configurar objetos de la base de datos, etc.).
Por motivos de seguridad, la ruta /_odoo.sh/ip-change
solo es accesible de forma interna por la propia plataforma y devuelve una respuesta 403
si intenta acceder por otros medios.
Este es un ejemplo de pseudoimplementación:
class IPChangeController(http.Controller):
@http.route('/_odoo.sh/ip-change', auth='public')
def ip_change(self, old=None, new=None):
_logger.info("IP address changed from %s to %s", old, new)
# Then perform whatever action required for your use case, e.g., update an
# ir.config_parameter, send an email, contact an external firewall service's API, ...
return 'ok'