Win32 COM Python使用一个全局调度程序实例在Flask中创建多个工作簿对象

Win32 COM Python使用一个全局调度程序实例在Flask中创建多个工作簿对象,python,multithreading,flask,win32com,pythoncom,Python,Multithreading,Flask,Win32com,Pythoncom,这是我试图实现的代码 from flask import Flask, request, jsonify import json import pythoncom import win32com.client from win32com.client import Dispatch xl = None xl = win32com.client.Dispatch("Excel.Application") app = Flask(__name__) @app.route("/check

这是我试图实现的代码

from flask import Flask, request, jsonify
import json   
import pythoncom
import win32com.client
from win32com.client import Dispatch

xl = None
xl = win32com.client.Dispatch("Excel.Application")

app = Flask(__name__)


@app.route("/check", methods=['POST'])
def check():

    pythoncom.CoInitialize()
    if request.method == 'POST':
        data = request.get_json()
        fname = data['fname']
        phName = data['PH_Name']
        liName = data['LI_NAME']
        ppm = data['PPM']
        policyTerm = data['Policy_Term']
        sumAssured = data['Sum_Assured']


        wb = None

        if xl : 
            wb = xl.Workbooks.Open(fname) 


            inp_sheet = wb.Sheets["Inputs"]

            #read data from sheet
            data = inp_sheet.Range('D8').Value


            wb.Close(False)
            xl.Quit()
            return (data)


if __name__ == '__main__':
    app.run(threaded=True, port=5001, debug=True)
问题在于,每当使用flask函数打开工作簿时,win32com就会创建新线程,因此需要将Dispatcher对象封送到流上,以将其传递给该函数。 对于api调用,我该如何做

我发现了一些使用CoMarshalInterThreadInterfaceInStream和CoGetInterfaceAndReleaseStream的建议,但当对api进行多个并行调用时,它们无法运行