我正在开发一个使用其他软件进行处理的Web应用程序(使用Django)。该软件需要将其工作目录设置为环境变量。当客户端发出请求时,应用程序会创建工作目录(创建要由外部软件使用的数据)。然后将外部软件使用的环境变量设置为创建的目录。最后,我们调用外部软件并获得结果。
以下是该应用正在执行的操作的摘要:
def request(data):
path = create_working_directory(data)
os.environ['WORKING_DIRECTORY'] = path
result = call_the_external_software()
我还没有对此进行测试(实际上它并不像本例中那么简单)。我想在新的过程中执行这个功能。当多个客户端同时发出请求时,我会遇到问题吗?如果是,我该怎么做才能解决问题?
ps:我无法改变外部程序的任何内容。
答案 0 :(得分:0)
见https://docs.python.org/2/library/subprocess.html#subprocess.Popen。请注意,Popen需要一个" env"您可以用来在子调用中定义环境变量的参数。
def request(data):
path = create_working_directory(data)
env = {"WORKING_DIRECTORY": path}
result = subprocess.call([ext_script] + ext_args, env=env)
return result # presumably