【发布时间】:2020-04-27 17:32:57
【问题描述】:
我的客户为我提供了一个 Python 控制台应用程序,该应用程序执行一些工作并将结果写入 .txt 文件。我的任务是编写一个 Windows 服务来读取特定的 .txt 文件并执行进一步的操作。
我在 .NET 上使用 C# 来编写服务。我的解决方案包含 3 个项目:
- 逻辑层项目。
- Windows 服务层项目。
- 一个测试应用层项目,用于调试和其他目的。
Windows 服务层和测试应用层都将逻辑层用于核心功能。当我通过测试层运行应用程序时,一切正常,但每当我尝试通过服务运行应用程序时,服务启动的 Python 独立应用程序不会写入任何输出文件。我可以看到 Python 应用程序在任务管理器中运行,但是任何地方都没有输出。我相信 Python 代码崩溃了,但我无法得到确切的原因。
我尝试了以下方法来调试问题:
- 在
Windows和System32目录中搜索任何相关的输出文件,只是为了考虑服务将这些目录作为默认工作目录的可能性。 - 在服务代码中使用绝对路径来确保 Python 部分不会将输出文件写入某个未知位置。
- 让客户端实现通过命令行参数将输出目录传递给 Python 代码。
- 用 C# 编写了一个模拟控制台应用程序,它写入一个文件,尝试通过服务调用它,但它工作正常并按预期写入文件。
- 怀疑标准 IO 可能会导致 Python 应用程序崩溃,因此在我的模拟程序中使用了标准 IO,但它可以正常工作。
- 尝试给 Python 代码一个很长的任务,这应该需要大约 30 分钟才能完全执行,但 Python 脚本立即运行并关闭,这基本上是它在某个时候崩溃的理论的可靠证明。
- 尝试使用我未提升权限的 Windows 用户而不是 本地系统 伪用户运行该服务。
- 已尝试将服务配置为能够与桌面交互。
我在这里完全没有想法。我还应该搜索什么方向?
请注意,如果这很重要:我正在使用 System.Diagnostics.Process 来启动 Python 脚本。
【问题讨论】:
标签: python c# .net windows-services