Vanliga tekniska frågor¶
”Schemalagda åtgärder utförs inte vid exakt den tidpunkt som förväntades”¶
På Odoo.sh-plattformen kan vi inte garantera en exakt körtid för schemalagda åtgärder.
Detta beror på att det kan finnas flera kunder på samma server, och vi måste garantera en rättvis andel av servern för varje kund. Schemalagda åtgärder genomförs därför på ett något annorlunda sätt än på en vanlig Odoo-server och körs enligt principen best effort.
Varning
Förvänta dig inte att någon schemalagd åtgärd ska köras oftare än var 5:e minut.
Finns det ”bästa praxis” när det gäller schemalagda åtgärder?¶
**Odoo.sh begränsar alltid exekveringstiden för schemalagda åtgärder (aka crons) Därför måste du ha detta i åtanke när du utvecklar dina egna crons.
Vi rekommenderar det:
Dina schemalagda åtgärder bör fungera på små partier av poster.
Dina schemalagda åtgärder bör slutföra sitt arbete efter att ha bearbetat varje batch; på så sätt behöver du inte börja om från början om de avbryts av tidsgränsen.
Dina schemalagda åtgärder ska vara ”idempotenta” <https://stackoverflow.com/a/1077421/3332416>`_: de får inte orsaka bieffekter om de startas oftare än förväntat.
Hur kan jag automatisera uppgifter när en IP-adress ändras?¶
**När IP-adressen för en produktionsinstans ändras görs dessutom en HTTP GET
-begäran till sökvägen /_odoo.sh/ip-change
med den nya IP-adressen inkluderad som en parameter för frågesträngen (new
), tillsammans med den tidigare IP-adressen som en ytterligare parameter (old
).
Denna mekanism gör det möjligt att vidta anpassade åtgärder som svar på en ändring av IP-adressen (t.ex. skicka ett e-postmeddelande, kontakta ett API för brandväggar, konfigurera databasobjekt etc.)
Av säkerhetsskäl är rutten /_odoo.sh/ip-change
endast tillgänglig internt av plattformen själv och returnerar ett 403
-svar om den nås på något annat sätt.
Här är ett exempel på en pseudo-implementering:
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'