通过Windows服务运行时,我的python应用程序崩溃

问题描述 投票:0回答:1

希望大家都过得不错。

我的客户为我提供了一个python应用程序(基于控制台),该应用程序进行了一些处理并编写了一个包含结果的.txt文件。我的任务是编写一个Windows服务,该服务读取特定的.txt文件并执行进一步的操作。

我已经用C#.NET编写了我的应用程序。我的解决方案包含3个项目:

  • 逻辑层项目。
  • Windows服务层项目。
  • 一个测试应用程序层项目,用于调试和其他目的。

Windows服务层和测试应用程序层都将逻辑层用于核心功能。当我通过测试应用程序运行该应用程序时,一切运行正常,但是,每当我尝试通过Windows服务运行该应用程序时,我的Windows服务启动的python独立应用程序都不会写入任何输出文件。我可以看到python应用程序在任务管理器中运行,但是任何地方都没有输出。我相信python应用程序崩溃了,但我无法找到确切原因。

我尝试了以下方法来调试问题:

  • 在Windows和System32目录中搜索了所有相关的输出文件,因为Windows服务默认情况下会写入这些目录。
  • 在调用的c#应用程序中使用了绝对路径,以确保python应用程序未将输出文件写入某个未知位置。
  • 让客户端向python应用程序添加功能,使其将输出目录作为命令行参数。
  • [在C#中编写了一个模拟控制台应用程序,该应用程序编写了一个文件,尝试通过Windows服务调用它,但是它工作正常,并按预期方式写入了该文件。
  • [怀疑标准IO可能导致python应用程序崩溃,因此在我的模拟应用程序中添加了标准IO,但它没有任何问题。
  • [尝试给python应用程序一个漫长的任务,应该花大约30分钟才能完全执行,但是python应用程序立即运行并关闭,这让我相信它会崩溃。
  • 尝试与我的Windows用户而不是本地系统运行Windows服务
  • 试图将服务标记为能够与桌面交互。

我在这里没有选择余地。如果有人可以帮助我解决这个问题,那就太好了。谢谢与问候。

编辑1:我正在使用System.Diagnostics.Process运行python应用程序。

python c# .net windows-services
1个回答
0
投票

如果它可以在您的测试应用中正常运行,则听起来像是权限问题。 Windows服务以什么安全上下文/用户身份运行,该用户是否有权在期望的位置写入文件系统?您是否尝试过使用输出文件的完整路径来确定预期的位置?

我倾向于编写一个小的python应用程序,该应用程序仅将“ hello world”保存到文件中,并从Windows服务中使之工作,然后从那里开始构建。

© www.soinside.com 2019 - 2024. All rights reserved.