When I run my app from cmd, I'm able to call the api very quickly. But when it is hosted in IIS (fastcgi - wfastcgi.py) the run takes forever and I"m unable to get any return from the api.
import flask
app = flask.Flask(__name__)
app.config["DEBUG"] = True
app.config['UPLOAD_FOLDER'] = 'holding'
@app.route('/test', methods=['GET', 'POST'])
def test():
import subprocess
import os
import re
libreoffice_exe = 'C:/Program Files/LibreOffice/program/soffice'
inputFileName = r'D:\folder\some_powerpoint_file.pptx'
outputFileName = r'D:\folder\output.pdf'
inputFileName = re.sub('\\\\', '/', inputFileName)
outputFileName = re.sub('\\\\', '/', outputFileName)
outputFileDir = os.path.dirname(outputFileName)
call_item = [libreoffice_exe, '--headless', '--convert-to', 'pdf', inputFileName, '--outdir', outputFileDir]
proc = subprocess.Popen(
call_item,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
proc.wait()
(stdout, stderr) = proc.communicate()
if proc.returncode != 0:
print(str(stdout))
print(str(stderr))
return 'fail'
return 'success'
if __name__ == '__main__':
app.run()
I'm not getting any error output from stderr/stdout.. it just runs indefinitely (until timeout)
Hope this will resolve another person's problem..
This helped me: https://ask.libreoffice.org/en/question/182108/not-able-to-launch-soffice-within-an-application-on-the-iis-server/
What worked for me is to add the argument into the subprocess call: "-env:UserInstallation=[file:///C:/test/NPP]" where [file:///C:/test/NPP] can be any url i believe