try関数のタイムアウト機器のレポートプロセスとレポートの作成のために、他の多くのスクリプトを呼び出す 1 つのスクリプトがあります。 プロセス ツールから取得されるデータには、JMP では処理できないエラーが含まれる場合があります。そこで、次のように Try() 関数で呼び出しをラップしました。
For(ii=1, ii < nitems(BulkScriptsToRun), ii++,
try(
Include( BulkScriptsToRun[ii] );
);
);
付属のスクリプトがクラッシュしないこともありますが、終了しないこともあります。
この問題は、スクリプトとデータの処理方法を編集することで修正できる可能性がありますが、これらは私が編集するスクリプトではありません。
たとえば、1 時間以上かかった場合に、try 関数で試行を失敗とみなす方法はありますか?
これを達成する別の方法はありますか? Try() を放棄する必要があることを伝える方法はありますか?
ありがとう
自動化とスクリプト作成Re: try関数のタイムアウトについて一方が他方の動作を必要とするのでしょうか?マスタースクリプトが本当に多数の別々のスクリプトを含んでいるだけなら、それぞれを別のタスクとして実行してみてはいかがでしょうか?それなら関係ないよ。それぞれが独自の JMP インスタンスを開いて実行し、JMP を閉じます。それぞれのタイムアウトを個別に制御することもできます。
Re: try関数のタイムアウトについてタスク スケジューラからマスター スクリプトを実行しています。そこでタイムアウトすることもできます。 しかし、スクリプトの 1 つで同じエラーが毎時間、毎日発生する場合、リスト内のそのスクリプトの下にあるすべてのスクリプトは実行されません。
マスター スクリプトが編成されているため、リストの後半にあるスクリプトの実行頻度が低くなり、完全にスキップされていることを認識するまでに数週間かかる場合があります。リストの順序を逆にすることもできますが、その場合、問題のあるスクリプトの問題を修正するまで、10 分ごとに実行する必要があるスクリプトが毎回スキップされます (これはさらに悪いことです)。
また、マスター スクリプトは、すべてのスクリプトの実行後に独自の進行状況を報告します。タスクが強制終了された場合、これは決して起こりません。
私の現在の解決策は、問題のあるスクリプトをコメントアウトし、責任者がそれを修正するのに十分な注意を払うのを待つことです。
それは動作します。
Re: try関数のタイムアウトについてこれは、スクリプトを変更できない場合は、Windows タスク スケジューラを使用して実行できるように思えます。 他のスクリプトを含むスクリプトを作成し、「含める」スクリプトで可能なすべてのエラーを管理し、スケジューラ タスクにタイムアウトを追加します。 時間が経過すると、どこにいても実行が終了します。
一般に、制御できないスクリプトのバッチを実行すると、非常に多くのさまざまなことを処理する必要があるため、すぐに面倒になってしまいます (私はこのようなことをしなければならなかったことがあります)。 以下は私が直面したいくつかの問題 (または改善の機会) です。
- 名前空間の衝突を管理する
- 不要なシンボルを削除/消去する
- スクリプトが Names Default To Here を使用しない状況から生き残る(1)
- 付属のスクリプトでのシンボルのクリア/グローバルの削除の使用から生き残る
- メモリを節約するために不要なデータ テーブルとレポートを閉じます。
- JMP を停止させるエラーをキャッチする
- 付属のスクリプトでの Exit/Quit の使用法
- スクリプトの実行をログに記録し、何が正しく実行されたかを知ることができます
これらのほとんどは、含まれているスクリプトをトレーニング/変更することで、はるかに簡単に処理できます。
Re: try関数のタイムアウトについていいえ、try() にはタイムアウト メカニズムがありません。これは、C++ の try-throw-catch メカニズムに非常に似ています。 ご想像のとおり、含まれている各スクリプトにロジックを組み込む必要があります。これにより、次のようなことが可能になります。
startSeconds = tickSeconds();
...
while(...
if( tickseconds() - startSeconds > 100, throw("Used more than 100 seconds") );
...)
これらのスクリプトを開いて編集することはできないと言ったのはわかりますが、編集する場合は、進行状況を示すためにコードにコールバックを行わせることができます。 その後、必要に応じてコールバックからスローを実行できます。 いずれの方法でも、各スクリプト内でループが何かを繰り返しているポイントを見つける必要があります。タイムアウトは、スクリプトが適切に動作しているかどうかによって異なります (時間をチェックし続けるため)。
Windows タスク スケジューラもソリューションの一部となる可能性があります。私はそれを使用したことがありませんが、それについて質問するスレッドがいくつかありました。 スクリプトから jmp プログラムを閉じることはできますか?何かを示唆するかもしれない。