gpt4 book ai didi

python - 在已部署的 Web 应用程序上调用 shell 命令时出现意外行为

转载 作者:行者123 更新时间:2023-12-01 02:22:28 25 4
gpt4 key购买 nike

我正在部署一个 Flask 应用程序,其中将启动 multiprocessing.Process。在这个进程中,我通过 subprocess.call() 调用 shell 命令。该脚本在本地主机上执行时运行良好,当使用 nginx 和 Gunicorn 部署时,Flask 应用程序将按预期运行,直到子进程启动,然后我收到以下错误日志:

DEBUG:root:start to run command
DEBUG:root:(<class 'FileNotFoundError'>, FileNotFoundError(2, "No such file or directory: 'java -jar ábsolute/path/to/jar/file')

Process(
target=decode_upload,
args=(
path_to_blf,
path_to_dbc_folder,
path_to_splitted,
path_to_decoder,
system_layout,
dc_doc,
dc_id,
file_type,
)
).start()

这是该函数的相关部分。

def decode_file(
path_to_blf,
path_to_dbc_folder,
path_to_splitted,
path_to_decoder,
system_layout=DEFAULT_SYSTEM_LAYOUT):
command = "{} {} --blf={}".format(
SOFTWARE_COMMAND,
path_to_decoder,
path_to_blf
)
for dbc_file_name in DBC_FILE_NAME_LIST:
command += " --dbc={}".format(
os.path.join(
path_to_dbc_folder,
dbc_file_name
)
)
command += " --out={}".format(path_to_splitted)


logging.debug("start to run command")
subprocess.call(command)
logging.debug(f)
logging.debug("run command end")

def decode_upload(
path_to_blf,
path_to_dbc_folder,
path_to_splitted,
path_to_decoder,
system_layout,
dc_doc,
dc_id,
file_type):
logging.basicConfig(filename='flask.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')

try:
decode_file(
path_to_blf,
path_to_dbc_folder,
path_to_splitted,
path_to_decoder,
system_layout)
except:
logging.debug(sys.exc_info())

当进程到达此行时失败。

subprocess.call(command)

如果我尝试从命令行调用“命令”,它可以正常工作。

最佳答案

from subprocess import Popen
command='your complete command as you paste on cmd'
p1=Popen(command,Shell=True)

这将帮助您将命令作为完整的字符串运行

关于python - 在已部署的 Web 应用程序上调用 shell 命令时出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com