Perguntas técnicas frequentes

“As ações agendas não são executadas no momento exato em que eram esperadas”

Na plataforma Odoo.sh, não podemos garantir um horário de execução exato para as ações programadas.

Isso se deve ao fato de que pode haver vários clientes no mesmo servidor, e precisamos garantir uma parte justa do servidor para cada cliente. Portanto, as ações agendadas são implementadas de forma ligeiramente diferente do que em um servidor Odoo normal e são executadas em uma política de melhor esforço.

Aviso

Não espere que nenhuma ação agendada seja executada com mais frequência do que a cada cinco minutos.

Existem “práticas recomendadas” relacionadas a ações agendadas?

Odoo.sh sempre limita o tempo de execução das ações agendadas (*aka* crons). Portanto, você deve ter esse fato em mente ao desenvolver seus próprios crons.

Recomendamos que:

  • Suas ações agendadas devem funcionar em pequenos lotes de registros.

  • Suas ações agendadas devem confirmar o trabalho após o processamento de cada lote; dessa forma, se forem interrompidas pelo limite de tempo, não será necessário recomeçar.

  • Suas ações agendadas devem ser idempotentes: elas não devem causar efeitos colaterais se forem iniciadas com mais frequência do que o esperado.

How can I automate tasks when an IP address change occurs?

Odoo.sh notifies project administrators of IP address changes. Additionally, when the IP address of a production instance changes, an HTTP GET request is made to the path /_odoo.sh/ip-change with the new IP address included as a query string parameter (new), along with the previous IP address as an additional parameter (old).

This mechanism allows custom actions to be applied in response to the IP address change (e.g., sending an email, contacting a firewall API, configuring database objects, etc.)

For security reasons, the /_odoo.sh/ip-change route is accessible only internally by the platform itself and returns a 403 response if accessed through any other means.

Here is a pseudo-implementation example:

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'