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