上文说到flask 可以通过wfastcgi.py 部署到iis 中,但我的项目必须使用arcpy, 不好使用linux平台,又由于其中flask 与arcpy的交互诡异问题,不得不采用外部调用 xxx.py文件方式获取结果
所以才有了使用subprocess.check_output方式调用
但在测试中发现单独的check_output 正常输出,在flask接口中却返回 500 服务器内部错误。多方查证,可能的原因是iis_user对cmd.exe 的权限不足,但几次设置文件夹权限之后仍无济于事。难道本身IIS 因安全问题限制此种方式调用?
待查证。
#coding:utf-8 import os import arcpy import time import random import sys from arcpy import env print('start') gdb = r'E: est-datadata2.gdb' #str(sys.argv[1]) arcpy.ClearWorkspaceCache_management() arcpy.env.workspace=gdb fc = arcpy.ListFeatureClasses() for f in fc: print(f) print('over')
#coding:utf-8 import os import subprocess from subprocess import check_output sentence=r'C:PSToolsPsExec.exe "C:Program FilesArcGISProinPythonenvsarcgispro-py3python.exe" E:site-saae-python ools est2.py' out = check_output(['python', r'E:site-saae-python ools est2.py'],universal_newlines=True, shell=True) print(out)
即是这句:
@app01.route('/test02', methods=['GET']) def test02(): out = check_output(['python', r'E:site-saae-python ools est2.py'],universal_newlines=True, shell=True) print(out) return out
待查证。