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.
Wie kann ich Aufgaben automatisieren, wenn eine IP-Adresse ändert?¶
Odoo.sh benachrichtigt Projektadministratoren über Änderungen der IP-Adresse. Wenn sich die IP-Adresse einer Produktionsinstanz ändert, wird außerdem eine HTTP-GET-Anfrage an den Pfad /_odoo.sh/ip-change
gesendet, wobei die neue IP-Adresse als Abfragezeichenfolgenparameter (new
) und die vorherige IP-Adresse als zusätzlicher Parameter (old
) enthalten ist.
Dieser Mechanismus ermöglicht die Anwendung benutzerdefinierter Aktionen als Reaktion auf die Änderung der IP-Adresse (z. B. Senden einer E-Mail, Kontaktaufnahme mit einer Firewall-API, Konfiguration von Datenbankobjekten usw.).
Aus Sicherheitsgründen ist die Route /_odoo.sh/ip-change
nur intern über die Plattform selbst zugänglich und gibt eine 403
-Antwort zurück, wenn auf sie über andere Mittel zugegriffen wird.
Hier ist ein Beispiel für eine Pseudo-Implementierung:
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'