我想同時用多個請求來加載測驗一個端點。我得到的錯誤是Argument list too long。
誰能幫我解決這個問題?
import subprocess
輸入argparse
def main(**kwargs)。
my_parser = argparse.ArgumentParser()
my_parser.add_argument('-s'/span>)
my_parser.add_argument('-e')
args = my_parser.parse_args()
i = int(vars(args)[s'] )
cmd = ''/span>
f= open('test.txt')
while i <= int(vars(args)['e'/span>])。
for line in f:
cmd = f'curl -X POST -H "Content-Type: application/json" https://some_api_ep -d {line} &'/span>
i =1
subprocess.run(cmd, shell=True)
如果 __name__ == "__main__":
main()
$ python load_generator.py -s 1 -e 1
回溯(最近一次呼叫)。
檔案 "load_generator.py", 行 20, 在 < module>
主體()
檔案 "load_generator.py", 行 17, 在 main
subprocess.run(cmd, shell=True)
檔案 "/Users/someone/.pyenv/versions/3.6.7/lib/python3.6/subprocess。 py", line 403, in run
with Popen(*popenargs, **kwargs) as process:
檔案 "/Users/someone/.pyenv/versions/3.6.7/lib/python3.6/subprocess. py", line 709, in __init__
restore_signals, start_new_session)
檔案 "/Users/someone/.pyenv/versions/3.6.7/lib/python3.6/subprocess. py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError。[Errno 7] 引數串列太長:'/bin/sh'
總記錄數
$ cat test.txt | wc -l
18732
樣本資料
$ cat test.txt
'{"ErrorCode"/span>: 55201, "ErrorClass": 8, "NodeID": 32, "Params0": 1, "Params1": 70451202, "Params2": 9530, "Params3": 7, "Mid": -1, "SystemName": None, "NodeName": "MSC", "Swrelease": "SWL [CRC:3816]", "Build": "AA"}'
'{"ErrorCode": 55004, "ErrorClass": 8, "NodeID": 32, "Params0": 538990697, "Params1": 410814, "Params2": 410931, "Params3": 0, "Mid"/span>: -1, "SystemName": None, "NodeName": "MSC", "Swrelease": "SWL [CRC:3816]", "Build": "AA"}'
'{"ErrorCode": 282, "ErrorClass": 0, "NodeID": 32, "Params0": 61, "Params1": 14, "Params2": 0, "Params3": 5, "Mid"/span>: -1, "SystemName": None, "NodeName": "MSC", "Swrelease": "SWL [CRC:3816]", "Build": "AA"}'
uj5u.com熱心網友回復:
我最后使用了@barmar的建議,即創建一個.sh檔案并通過/bin/sh運行它。
uj5u.com熱心網友回復:
試試這樣改:
while i < = int(vars(args)['e'/span>])。
for line in f:
cmd = f'curl -X POST -H "Content-Type: application/json" https://some_api_ep -d {line} & '
i =1
subprocess.run(cmd, shell=True)
to:
while i < = int(vars(args)['e'/span>])。
for line in f:
cmd = f'curl -X POST -H "Content-Type: application/json" https://some_api_ep -d {line} &'/span>
subprocess.run(cmd, shell=True)
i =1
或者你可以從這個"如何在Python中啟動一個背景行程?"
中查看。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/318331.html
標籤:
