首页 > 解决方案 > Django - 某些 Py 模块在 IIS 中不起作用

问题描述

这是我第一次在这里提出问题。一些背景,我今年开始在 Django 和 Python 上编码一年多但不到 2 年,所以我没有太多。这个问题是我在工作中发展的一个问题。我的团队在编写 Python 或 Django 或两者兼有方面是新手或没有经验。

问题

我们有一个基于 Django 3.0.2 的 Web 应用程序,并为数据库使用 MSSQL。我们公司的政策是使用 Windows 服务器和 IIS 作为生产和测试服务器。我们在这方面做了很多工作,除了一些不起作用的 python 库和 Django 模块,主要是 Xlwings 和 Django-post-office 之外,所有的工作都很好。对于 XLwings,它不运行代码和 Excel(我们在服务器上有有效的许可证和最新的 Excel 程序)。

下面的代码;

        filepath = BASE_DIR + '\\media\\Template.xlsm'
        temp_path = BASE_DIR + '\\media\\' + '{}.{}'.format(uuid4().hex, 'xlsm')

        shutil.copyfile(filepath, temp_path)

        pythoncom.CoInitialize()
        
        app1 = xw.App(visible=True)
        
        wt = xw.Book(temp_path)

        sht = wt.sheets['Cover']
        
        sht.range('E5').value = request.POST.get('year')
        sht.range('E6').value = request.POST.get('company')
        sht.range('E7').value = companydata.employer_no
        sht.range('E8').value = email

        wt.save(temp_path)
        app1.quit()

至于 Django-post-office,我们有一个使用它的模块让它工作,但使用它的其他模块不起作用。除了模板和主题外,使用的代码相同。

代码如下;

    plaintext = get_template('template.txt')
    htmly = get_template('template.html')
    mail.send(
            [email],
            NAME_EMAIL_DOMAIN,
            message = plaintext.render(info),
            html_message = htmly.render(info),
            subject = f'Subject',
            priority = 'now',
            attachments = {
                'RemunerationTemplate.xlsm': temp_path,
            },
        )

奇怪的是它可以在 CMD 上运行,但它不能在 IIS 上运行。我们不知道为什么以及如何纠正它。我们询问 IT 支持(负责服务器的部门)说测试服务器不受限制。

失败修复

  1. 尝试更改 IIS 配置、环境等 - 没有骰子
  2. 更改代码 - 我们是菜鸟,不知道有什么问题,但显然不起作用
  3. 谷歌它 - 信息太稀少
  4. 询问 IT 支持人员是否有任何想法 - 他并不在意,只是对我说生气

所以,我很感激这方面的任何帮助,因为我们已经接近部署日期,而且这个问题已经在我过去一周的睡眠中困扰着我。谢谢你

标签: sql-serverdjangoiisxlwingsdjango-postoffice

解决方案


推荐阅读