Häufige technische Fragen

„Geplante Aktionen werden nicht genau zu dem Zeitpunkt ausgeführt, zu dem sie erwartet wurden“

Auf der Odoo.sh-Plattform können wir keine genaue Laufzeit für geplante Aktionen garantieren.

Der Grund dafür ist die Tatsache, dass mehrere Kunden auf demselben Server sein können und wir jedem Kunden einen fairen Anteil am Server garantieren müssen. Geplante Aktionen werden daher etwas anders implementiert als auf einem regulären Odoo-Server und werden nach dem Prinzip „Bestes Angebot“ ausgeführt.

Warnung

Erwarten Sie nicht, dass eine geplante Aktion öfter als alle 5 Minuten ausgeführt wird.

Gibt es „bewährte Verfahren“ bezüglich geplanter Aktionen?

Odoo.sh begrenzt immer die Ausführungszeit von geplanten Aktionen (*aka* Crons). Daher müssen Sie diese Tatsache berücksichtigen, wenn Sie Ihre eigenen Crons entwickeln.

Wir empfehlen Ihnen:

  • Ihre geplanten Aktionen sollten für kleinere Datensatzbündel laufen.

  • Ihre geplanten Aktionen sollte ihre Arbeit nach der Verarbeitung jedes Stapels festsetzen; so müssen Sie nicht von vorne beginnen, wenn sie durch das Zeitlimit unterbrochen werden.

  • Ihre geplanten Aktionen sollten idempotent sein: Sie dürfen keine Nebeneffekte verursachen, wenn sie öfter als erwartet gestartet werden.

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'