2013-01-14 2 views
1

"최대 실행 시간 초과"catch 최대 실행 시간을 초과 했습니까?

나는 try ... catch (e)로 잡으려고합니다. // 지금까지는 저를 위해 작동하지 않습니다.

감사합니다 귀하의 질문에 대한 코멘트에 작성된

+1

을 어떻게 할 수없는 확인! - 당신이 갔어요 제한을 넘어서서 catch 블록에서 더 많은 코드를 실행할 수있게하면 제한없이 무시하고 실행할 수 있습니다. –

답변

2

이 가능하지 이잖아. 그러나 실행이 시작될 때 scriptDB 또는 속성에 플래그를 설정하고 정상 종료시 플래그를 지울 수 있으므로 다음 실행시 스크립트가 마지막으로 실행되었을 때 정규 종료가 발생했는지 확인할 수 있습니다 시간과 노력을하지 않으면 수정 조치를 취하십시오.

1

위의 답변은 정확합니다. 그것은 불가능합니다. pbhd에서 언급 한 해결 방법의 쉬운 대안은 스크립트 실행 시간 (예 : new Date().getTime()의 결과를 일정한 간격으로 비교)을 추적하고 최대 실행 시간에 도달하기 바로 전에 catch 문에 포함 할 내용을 실행하는 것입니다. 최대 값은 6 분입니다 (reference).

그런 식으로 오류를 포착 할 필요가 없습니다. 선점 할 수 있습니다.

-2

정상적인 테스트 중에 우연히 일일 실행 시간 제한 100 %를 사용하는 무한 루프 (또는 매우 긴 실행 루프)를 만들 수 있습니다. 따라서 크게 지속적인 발전을 늦추고 그리고 아마도 다른 작업을 할 개발자를 강제 -

당신은 즉시 다른 24시간를위한 Google 스크립트 재 시도 할 수없는, 당신은 즉시 잘못 돔이 무엇을 실현하더라도 현재의 문제로부터 초점 /주의 집중을 멀리한다. 이것은 거의 항상 나쁜 것입니다.

내 제품 ("IBM 올리버 CICS 테스트/디버그"- Wikipedia article 참조)는, 어떤 특정 거래에 시간 제한을 가지고 그 결과 시간을 차단하여 - 37 개의 년 전 - - 그리고 많은 사람들이 문제를 해결 의 옵션을 허용 : -

  1. 지속 또는
  2. 하는 변수를 (같은 시간)
  3. "수동"다시 시도 또는
  4. 중단을 수정/검사합니다.

Google은 실행 시간이 너무 무거워 보이는 경우 "일시 중지"하여이 방법을 쉽게 구현할 수 있습니다. 과도한 API 호출 ("매크로 루프") 및 과도한 메모리 사용과 같은 OLIVER의 다른 리소스와 비슷한 솔루션이있었습니다.

"시간의 시작 이후"(그리고 확실히 PC가 생각되기 전에) 존재했던 문제에 대한 해결책을 제공하는 것은 나 같은 "오래된 타이머"가 필요해 보입니다.

Google의 현재 '솔루션'(즉, 절대 제한)은 Google이 자체 서버의 습격을 막는 데 도움이됩니다. 오래 전에 OLIVER가했던 일을 그들이 쉽게 할 수 있습니다. 그런데 Wikipedia 기사에는 "IBM"접두어가 없어야합니다. 내 제품이었고 일부 광대 Wikipedia 편집자는 접두어를 포함하도록 변경했습니다.

(덧붙여 말하자면 Google은 동일한 스크립트를 실행하는 다른 스크립트를 방지하지 않습니다. 최소 개의 여분의 시간을 사용할 수 있습니다 (예 : 동일한 스프레드 시트의 스크립트가 여전히 작동 함). 원본 스크립트 하지만 실험로는 "초과 실행 시간"오류와 매우 짧은 시간 후 중단 된

GIZ-A-JOB 구글 -. 당신이 그 가치를 알고

+0

나는이 대답을 얻지 못합니다. 자랑 스럽습니다. – Adelin

관련 문제