Veel voorkomende technische vragen

“Geplande acties lopen niet precies op het verwachte tijdstip”

Op het Odoo.sh-platform kunnen we geen exacte looptijd voor geplande acties garanderen.

Dit is te wijten aan het feit dat er meerdere klanten op dezelfde server kunnen zijn, en we moeten voor elke klant een eerlijk deel van de server garanderen. Geplande acties worden daarom iets anders geïmplementeerd dan op een gewone Odoo-server, en worden uitgevoerd volgens een best effort-beleid.

Waarschuwing

Verwacht niet dat een geplande actie vaker dan elke 5 minuten wordt uitgevoerd.

Zijn er ‘best practices’ met betrekking tot geplande acties?

Odoo.sh beperkt altijd de uitvoeringstijd van geplande acties (*ook wel* crons). Daarom moet je dit feit in gedachten houden bij het ontwikkelen van je eigen crons.

Wij adviseren dat:

  • De geplande acties zouden moeten werken voor kleine batches records.

  • Je geplande acties zouden hun werk moeten doen na het verwerken van elke batch; op deze manier is het niet nodig om opnieuw te beginnen als ze worden onderbroken door de tijdslimiet.

  • Je geplande acties moeten idempotent zijn: ze mogen geen bijwerkingen veroorzaken als ze vaker worden gestart dan verwacht.

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'