Python コマンド ラインのスケジュールされたタスク自動化ワークフローとは何ですか?

王林
リリース: 2023-05-13 17:01:11
転載
1631 人が閲覧しました

1. 使用シナリオ

jmeter スクリプトを定期的に実行し、Python タイマーを通じてコマンド ライン コマンドを一定の間隔で実行します。

2. ライブラリ

os、datetime、threading

(1) threading.Timer() タイマーを使用してスケジュールされたタスクを実装します

#Timer(interval, function, args=None, kwargs=None)タイマーの作成cancel()タイマーのキャンセルstart() スレッドを使用実行モード#join(self, timeout=None) #timer 最も基本的な理解は、タイマーは複数のスケジュールされたタスクを開始できるということです。これらのタイマー タスクは非同期で実行されるため、順次実行を待つという問題は発生しません。
タイマーメソッド 説明
#スレッド実行の終了を待ちます
3. スクリプトを実行します

jmeter 実行コマンド ライン

jmeter -n -t スクリプト名.jmx -l スクリプト レポート名.jtl

パラメーターの説明:

n 非 GUI モード、コマンド ライン モード (非 GUI モードでの実行を示します)
  • -t テスト ファイル、実行する jmeter テスト スクリプト ファイル (通常は絶対パスを使用します)
  • -l 結果ファイル、結果を記録するファイル
  • - h jmeter のヘルプ情報を取得します
  • ##-r リモート実行、リモート サーバーを起動します (非 GUI モードでリモート ホストによって構成されたすべてのリモート エージェントを起動します)

  • -R リモート実行 (指定されたマシン (IP: ポート) を非 GUI モードのプロキシ マシンとして起動します)

  • -e テスト レポートを生成します。テストの設定

  • -o テスト レポートが生成されるフォルダーを指定します。フォルダーは空である必要があります/存在しません

  • - H エージェントホスト (jmeter プロキシホストで使用するものを設定)

  • -P プロキシポート (jmeter で使用するプロキシポートを設定)

  • -X Exit (非 GUI モードでテスト終了 時刻終了)

  • 4. スクリプト

    import os
    from datetime import datetime
    from threading import Timer
    # 定时任务
    def task():
        now = datetime.now()
        ts = now.strftime("%Y-%m-%d %H:%M:%S")
        print(datetime.now())
        a = os.system("jmeter -n -t /Users/liyinchi/workspace/功能测试/好慷/测试数据(压测脚本)/阶梯拼团多维表格20230418.jmx -l /Users/liyinchi/workspace/功能测试/好慷/测试数据(压测脚本)/阶梯拼团多维表格20230418-result.jtl")
        print(a)
    # 执行器
    def func():
        task()
        t = Timer(60*1, func)
        t.start()
    func()
    ログイン後にコピー

    実行結果:

5. Python で一般的に使用されるスケジュールされたタスク

while True: sleep()Python コマンド ラインのスケジュールされたタスク自動化ワークフローとは何ですか?

threading.Timer timer

Timeloop ライブラリはスケジュールされたタスクを実行します

スケジューリング モジュール sched

スケジューリング モジュール スケジュール

タスク フレームワーク APScheduler

分散メッセージ システム celery はスケジュールされたタスクを実行します

付属のスケジュールされたタスクを使用しますwindows

6. 4 つのメソッドが使用されます Python はコマンド ライン

を呼び出します (1) os.system

import os
a=os.system("ls")
a
ログイン後にコピー

プログラムの実行時に出力が表示され、戻り値が返されます値 a はプログラムの終了コードです

(2) os.popen

import os
a=os.popen("ls")
a.readline()
ログイン後にコピー

戻り値はファイル file、

file.readlines() は戻り値ですコマンド

(3) subprocess

は、Python プログラム Subprocess で作成できます。

subprocess.call()

import subprocess
 subprocess.call(['ls','-l' ])
ログイン後にコピー

その中に、「ls&rsquo」があります。 ; はコマンドラインに入力されたコマンドに対応し、-l は対応する操作です。 os.system

subprocess.check_output('ls')
ログイン後にコピー

のようなプログラム終了コードを返します。os.popen のような標準出力を返します。

Popen オブジェクトを呼び出して操作を実行することもできます。 subprocess

import subprocess
child = subprocess.Popen('ping -c4 blog.linuxeye.com',shell=True)
ログイン後にコピー

現時点では、複数のコマンドを使用してサブプロセスを制御できます。 subprocess.PIPE を使用して自己プロセスの入力と出力を接続することもできます...

(4) コマンド

import commands
 commands.getoutput('ls')
ログイン後にコピー

プログラム出力に戻る

以上がPython コマンド ラインのスケジュールされたタスク自動化ワークフローとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート