わかりました、この問題を解決するために頭痛がし始めています。今、スタックオーバーフローで助けを求めることにしました。まず、私がやろうとしていることを紹介してください:
私の django アプリは今のところ非常にシンプルです (ただし、将来的には進化すると思います)。リクエストを受け取るだけで、ユーザーが選択できる 3 つのオプションを持つテンプレートをレンダリングします。これらのオプションは、AutoCAD を使用したファイル形式の変換です (DXF から DWG、DWG から DXF、および DXF から PDF)。したがって、ユーザーは1つのオプションを選択し、入力ファイルを選択し、サーバーで外部プログラムを呼び出してタスクを実行し、最後にzipファイルをユーザーに応答します。
これらは事実です:
1)django開発サーバーでは、すべてが正常に機能します。しかし、人生のすべてが簡単ではないため、(明らかな理由で) django 開発サーバーを運用環境で使用することはできません。だから私は自分のアプリを本番開発にデプロイしようとしました。
2) apache mod_wsgi を使用して apache にデプロイしました (django docs で推奨されている方法です)。AutoCAD が外部プログラムによって呼び出され、まったく応答しないという 1 つのことを除いて、すべて正常に動作します。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
誰かがこれらの問題に対するアイデアの王様を持っていますか? みんなありがとう!