try 함수의 시간 초과장비에 대한 보고 프로세스 및 보고서 작성을 위해 다른 많은 스크립트를 호출하는 단일 스크립트가 있습니다. 때때로 프로세스 도구에서 나오는 데이터에는 JMP가 처리할 수 없는 오류가 포함됩니다.그래서 다음과 같이 Try() 함수에서 호출을 래핑했습니다.
For(ii=1, ii < nitems(BulkScriptsToRun), ii++,
try(
Include( BulkScriptsToRun[ii] );
);
);
때때로 포함된 스크립트가 충돌하지 않지만 완료되지는 않습니다.
이것은 스크립트를 수정하고 데이터를 처리하는 방식으로 해결할 수 있지만 내가 편집할 스크립트는 아닙니다.
예를 들어 1시간 이상 걸리는 경우 try 함수가 try 실패로 간주하도록 하는 방법이 있습니까?
이것을 달성하는 다른 방법이 있습니까? 포기해야 함을 Try()에 알리는 방법이 있습니까?
감사 해요
스크립팅Re: try 함수의 시간 초과아니요, try()에는 시간 초과 메커니즘이 없습니다. C++ try-throw-catch 메커니즘과 매우 유사합니다. 짐작하시겠지만 포함된 각 스크립트에 논리를 넣어야 하며 다음과 같은 작업을 수행할 수 있습니다.
startSeconds = tickSeconds();
...
while(...
if( tickseconds() - startSeconds > 100, throw("Used more than 100 seconds") );
...)
편집을 위해 해당 스크립트를 열 수 없다고 말한 것을 알고 있지만 열 수 있다면 진행 상황을 나타내기 위해 코드에 콜백을 만들도록 할 수 있습니다. 그런 다음 필요한 경우 콜백에서 throw를 수행할 수 있습니다. 어느 쪽이든 루프가 무언가를 반복하는 각 스크립트의 지점을 찾아야 하고 시간 초과는 스크립트가 (시간을 계속 확인하기 위해) 합리적으로 잘 작동하는지에 따라 다릅니다.
Windows 작업 스케줄러도 솔루션의 일부일 수 있습니다. 나는 그것을 사용하지 않았지만 그것에 대해 질문하는 많은 스레드가있었습니다. 스크립트에서 jmp 프로그램을 닫을 수 있습니까?뭔가를 제안할 수 있습니다.
Re: try 함수의 시간 초과스크립트를 수정할 수 없는 경우 Windows 작업 스케줄러로 수행할 수 있는 것처럼 들립니다. 다른 스크립트를 포함하는 스크립트를 만들고 "포함" 스크립트에서 발생할 수 있는 모든 오류를 관리하고 스케줄러 작업에 시간 초과를 추가합니다. 시간이 다 된 후에는 어디에서나 실행을 종료합니다.
일반적으로 제어할 수 없는 스크립트 배치를 실행하는 것은 상당히 많은 다른 일을 처리해야 할 수도 있기 때문에 빠르게 지저분해질 수 있습니다(저는 이와 같은 작업을 수행해야 했습니다). 다음은 내가 직면한 몇 가지 문제(또는 개선 기회)입니다.
- 네임스페이스 충돌 관리
- 불필요한 기호 삭제/지우기
- 스크립트가 Names Default To Here(1)를 사용하지 않는 상황에서 살아남으십시오.
- 포함된 스크립트에서 Clear Symbols/Delete Globals 사용에서 살아남으십시오.
- 불필요한 데이터 테이블과 보고서를 닫아 메모리 절약
- JMP를 중지시키는 오류 잡기
- 포함된 스크립트에서 Exit/Quit 사용
- 무엇이 제대로 실행되었는지 알기 위한 로그 스크립트 실행
이들 중 대부분은 포함된 스크립트를 훈련/수정함으로써 처리하기가 훨씬 쉽습니다.
Re: try 함수의 시간 초과작업 스케줄러에서 마스터 스크립트를 실행하고 있습니다.그리고 거기에서 시간 초과할 수 있습니다. 그러나 스크립트 중 하나에 매시간 동일한 오류가 발생하면 목록에 있는 스크립트 아래에 있는 모든 스크립트는 실행되지 않습니다.
마스터 스크립트가 구성되는 방식은 나중에 목록에 있는 스크립트가 덜 자주 실행되기 때문에 완전히 건너뛴다는 것을 알아차리는 데 몇 주가 걸릴 수 있습니다.목록의 순서를 반대로 할 수도 있지만 문제가 있는 스크립트에서 문제를 해결할 때까지 매 10분마다 실행해야 하는 스크립트를 건너뛸 수 있습니다(이것이 더 나쁩니다).
또한 마스터 스크립트는 모든 스크립트가 실행된 후 자체 진행 상황을 보고합니다.작업이 종료되면 이런 일이 발생하지 않습니다.
내 현재 솔루션은 문제가 있는 스크립트를 주석 처리하고 담당자가 문제를 해결할 수 있을 때까지 기다리는 것입니다.
효과가있다.