Gyakori technikai kérdések¶
„Scheduled actions do not run at the exact time they were expected”¶
Az Odoo.sh platformon nem tudjuk garantálni az ütemezett műveletek pontos futási idejét.
Ez annak köszönhető, hogy ugyanazon a szerveren több ügyfél is lehet, és biztosítanunk kell a szerver igazságos megosztását minden ügyfél számára. Az ütemezett műveletek ezért kissé eltérően vannak megvalósítva, mint egy hagyományos Odoo szerveren, és legjobb erőfeszítés elv alapján futnak.
Figyelem
Ne várja el, hogy bármely ütemezett művelet gyakrabban fusson, mint 5 percenként.
Are there „best practices” regarding scheduled actions?¶
Az Odoo.sh mindig korlátozza az ütemezett műveletek (*más néven* crons) futási idejét. Ezért ezt figyelembe kell vennie, amikor saját crons-okat fejleszt.
Azt javasoljuk, hogy:
Az ütemezett műveleteinek kis rekordcsomagokon kell dolgozniuk.
Az ütemezett műveleteinek minden csomag feldolgozása után el kell kötelezniük a munkájukat; így ha a futási időkorlát megszakítja őket, nincs szükség az újrakezdésre.
Az ütemezett műveleteinek idempotens kell lenniük: nem okozhatnak mellékhatásokat, ha gyakrabban indulnak el, mint várható.
Hogyan tudom automatizálni a feladatokat, amikor IP-cím változás történik?¶
Az Odoo.sh értesíti a projekt adminisztrátorait az IP-cím változásokról. Továbbá, amikor egy éles példány IP-címe megváltozik, egy HTTP GET kérés történik a /_odoo.sh/ip-change útvonalra az új IP-címmel, mint lekérdezési karakterlánc paraméter (new), valamint a korábbi IP-cím, mint további paraméter (old).
Ez a mechanizmus lehetővé teszi egyedi műveletek alkalmazását az IP-cím változására válaszul (pl. e-mail küldése, tűzfal API elérése, adatbázis objektumok konfigurálása stb.).
Biztonsági okokból a /_odoo.sh/ip-change útvonal csak a platform által belsőleg érhető el, és 403 választ ad, ha bármilyen más módon próbálják elérni.
Íme egy álpélda megvalósítás:
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'