好的,我开始为解决这个问题而头疼,现在我决定在 stackoverflow 中寻求帮助。首先,让我知道介绍我正在尝试做的事情:
我的 django 应用程序现在非常简单(但我希望将来会发展),它只需要一个请求,呈现一个模板,该模板有三个选项供用户选择。这些选项是使用 AutoCAD 进行的文件格式转换(DXF 到 DWG、DWG 到 DXF 和 DXF 到 PDF)。所以用户选择一个选项,选择输入文件,在服务器中我调用一个外部程序来完成任务,最后,它向用户响应一个 zip 文件。
这些是事实:
1)绝对一切都在 django 开发服务器中正常工作。但是,由于生活中的一切都不容易,我不能(出于显而易见的原因)在生产环境中使用 django 开发服务器。所以我尝试在生产开发中部署我的应用程序。
2)我使用apache mod_wsgi将它部署在apache中(这是django docs推荐的方式)。一切正常,除了一件事:AutoCAD 被外部程序调用,它绝不响应。当我尝试向 AutoCAD 发出任何类型的命令时,我收到 RPC_E_CALL_REJECTED。我认为这是 AutoCAD 用于执行任务的 COM 对象的一些问题,但我不确定,我不知道如何解决它。你有什么主意吗?
3)我暂时忘记了apache + mod_wsgi并开始使用HeliconZoo。同样,一切正常,但 HeliconZoo 不能使用 subprocess.call() 因为我得到访问被拒绝 [错误 5]。我已经检查了使用的文件夹中的所有权限,并且显然它具有所有权限。
这是我在上述所有场景中使用的代码:
def convert(input_path, template, output_path, method_name):
exit_code = subprocess.call([CONVERSOR_EXE_PATH, input_path, PDF_TEMPLATE_PATH, output_path, method_name])
return exit_code
有没有人对这些问题有任何想法?多谢你们!