Python Django中如何处理环境变量和并发性

Python Django中如何处理环境变量和并发性,python,django,environment-variables,Python,Django,Environment Variables,我正在开发一个web应用程序(使用Django),它使用另一个软件进行一些处理。此软件需要将其工作目录设置为位于环境变量中。当客户端发出请求时,应用程序将创建工作目录(创建外部软件使用的数据)。然后将外部软件使用的环境变量设置为创建的目录。最后调用外部软件并得到结果 以下是该应用程序所做工作的摘要: def request(data): path = create_working_directory(data) os.environ['WORKING_DIRECTORY'] =

我正在开发一个web应用程序(使用Django),它使用另一个软件进行一些处理。此软件需要将其工作目录设置为位于环境变量中。当客户端发出请求时,应用程序将创建工作目录(创建外部软件使用的数据)。然后将外部软件使用的环境变量设置为创建的目录。最后调用外部软件并得到结果

以下是该应用程序所做工作的摘要:

def request(data):
    path = create_working_directory(data)
    os.environ['WORKING_DIRECTORY'] = path
    result = call_the_external_software()
我还没有测试过这一点(实际上它并不像本例中那么简单)。我正在考虑在新流程中执行此功能。当多个客户端同时发出请求时,我会遇到问题吗?如果是,我应该如何解决问题

ps:我无法更改外部程序的任何内容。

请参阅。请注意,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

请求是否必须返回外部软件的结果?如果没有,一个选项是使用一个消息队列,您可以保证一次只处理一条消息。另外,您如何调用外部软件?如果您使用的是子流程,则可以将环境变量设置为调用的一部分:@Joe Yes应用程序在处理外部软件后应返回其结果。我使用python库提供的函数调用该软件。该软件不是用Python编写的。那么你需要确保你的服务器是单线程的,否则你会有问题。可能会将它放在像nginx这样的反向代理之后,以确保只有该路径具有单个并发连接?正如user230137所说,外部程序不是用
子进程调用的,而是用Python函数调用的。