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") );
...)
これらのスクリプトを開いて編集することはできないとおっしゃっていましたが、開いた場合は、進行状況を示すためにコードへのコールバックを作成してもらうことをお勧めします。 次に、必要に応じてコールバックからスローを実行できます。 いずれにせよ、ループが何かを繰り返している各スクリプト内のポイントを見つける必要があります。タイムアウトは、スクリプトが適切に動作しているかどうかによって異なります(時間をチェックし続けるため)。
Windowsタスクスケジューラもソリューションの一部である可能性があります。私はそれを使用していませんが、それについて質問するスレッドがたくさんあります。 スクリプトからjmpプログラムを閉じることはできますか?何かを示唆するかもしれません。
Re:try関数のタイムアウトこれは、スクリプトを変更できない場合にWindowsタスクスケジューラで実行できることのように聞こえます。 他のスクリプトを含むスクリプトを作成し、「包含」スクリプトで発生する可能性のあるすべてのエラーを管理し、スケジューラータスクにタイムアウトを追加します。 時間がなくなると、実行が終了します。
一般に、制御できないスクリプトのバッチを実行すると、非常に多くの異なることを処理する必要がある可能性があるため、すぐに混乱する可能性があります(私はこのようなことをしなければなりませんでした)。 以下は私が直面したいくつかの問題(または改善の機会)です:
- 名前空間の衝突を管理する
- 不要な記号の削除/クリア
- スクリプトがNamesDefault To Here(1)を使用しない状況から生き残る
- 含まれているスクリプトでのクリアシンボル/削除グローバルの使用から生き残る
- 不要なデータテーブルとレポートを閉じてメモリを節約します
- JMPを停止させるエラーをキャッチする
- 含まれているスクリプトでのExit / Quitの使用
- スクリプトの実行をログに記録して、何が正しく実行されたかを確認します
これらのほとんどは、含まれているスクリプトをトレーニング/変更することで、はるかに簡単に処理できます。
Re:try関数のタイムアウトタスクスケジューラからマスタースクリプトを実行しています。そして、そこでタイムアウトすることができます。 ただし、スクリプトの1つに同じエラーが毎日、毎日発生する場合、リストにあるそのスクリプトの下にあるすべてのスクリプトが実行されることはありません。
これらはマスタースクリプトの編成方法であり、リストの後半にあるスクリプトの実行頻度は低いため、完全にスキップされていることに気付くまでに数週間かかる場合があります。リストの順序を逆にすることもできますが、問題のあるスクリプトの問題を修正するまで、10分ごとに実行する必要のあるスクリプトは毎回スキップされます(これはさらに悪いことです)。
また、マスタースクリプトは、すべてのスクリプトが実行された後、自身の進行状況を報告します。タスクが強制終了された場合、これは決して起こりません。
私の現在の解決策は、問題のあるスクリプトをコメントアウトし、責任者がそれを修正するのに十分な注意を払うのを待つことです。
できます。