有套老系統,網站界面發起操作,調用服務器的腳本跑任務。
使用python重構,需要用到subprocess。subprocess.run是高階函數,subprocess.popen是底層函數。
一般來說,腳本放在指定目錄,需要拼接路徑獲取絕對路徑。而且絕對路徑要兼容UNIX和Windows環境。
os.path.join(path1,path2,path3,script)
調用腳本的返回結果需要轉化爲字符串,不然會提示:
TyperError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a CompletedProcess.
r = subprocess.run(['python', scriptpath, paramaters], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)