자주 묻는 기술적인 질문

“예약된 작업이 예상 시간에 정확하게 실행되지 않음”

Odoo.sh 플랫폼에서는 예약된 작업에 대한 정확한 실행 시간을 보장해 드릴 수 없습니다.

이는 동일한 서버에 고객이 여러 명 있을 수 있기 때문이며 모든 고객이 공평하게 서버를 공유할 수 있도록 보장해야 합니다. 따라서 예약 작업은 일반 Odoo 서버와 약간 다르게 구현되며 최선의 노력 을 하는 정책에 따라 실행됩니다.

경고

예약 작업의 실행 빈도는 5분 미만으로 설정할 수 없습니다.

예약된 작업과 관련된 “모범 사례” 가 있나요?

**Odoo.sh에서 예약 작업 (일명 크론)의 실행 시간은 항상 제한되어 있습니다. 따라서 자체 크론을 개발할 때 이 내용을 염두에 두어야 합니다.

권장 사항으로는:

  • 예약 작업이 소량의 레코드 배치에서 동작하도록 합니다.

  • 예약 작업에서 각 배치를 처리한 후에 작업을 커밋하도록 해야 시간 제한 때문에 중단되더라도 다시 시작할 필요가 없게 됩니다.

  • 예약된 작업은 멱등성 이 있어야 합니다. 예정보다 자주 실행되더라도 부작용이 있어서는 안 됩니다.

IP 주소가 변경되었을 경우에는 작업을 어떻게 자동화할 수 있나요?

Odoo.sh에서 프로젝트 관리자에게 IP 주소가 변경되었다는 사실을 알립니다. 또한 프로덕션 인스턴스의 IP 주소가 변경되면 HTTP GET 요청이 /_odoo.sh/ip-change 경로에서 수행되며, 여기에는 쿼리 문자열 매개변수 (new)로 되어있는 새로운 IP 주소와 추가 매개변수 (old)로 제공되는 이전 IP 주소가 포함되어 있습니다.

이 메커니즘을 통해 IP 주소가 변경될 경우 사용자 지정 작업을 실행할 수 있습니다 (예: 이메일 전송, 방화벽 API에 연결, 데이터베이스 개체 구성 등).

보안상의 이유로 ‘/_odoo.sh/ip-change’ 경로는 내부적으로 플랫폼에서만 액세스할 수 있으며 다른 수단을 통해 액세스할 경우에는 ‘403’ 응답을 반환합니다.

다음은 가상 구현의 예시입니다.

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'