Vanliga tekniska frågor¶
”Schemalagda åtgärder körs inte vid exakt den tidpunkt de 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 implementeras därför något annorlunda än på en vanlig Odoo-server, och körs enligt en bästa ansträngning-policy.
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” för schemalagda åtgärder?¶
Odoo.sh begränsar alltid exekveringstiden för schemalagda åtgärder (*aka* crons). Därför måste du ha detta faktum i åtanke när du utvecklar dina egna crons.
Vi rekommenderar detta:
Dina schemalagda åtgärder bör fungera på små partier av poster.
Dina schemalagda åtgärder bör utföra sitt arbete efter bearbetning av 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 bör vara idempotenta: 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'