Мой клиент предоставил мне консольное приложение Python, которое выполняет некоторую работу и записывает результат в файл .txt
. Моя задача - написать сервис Windows, который читает этот конкретный файл .txt
и выполняет дальнейшие действия.
Я использовал C# on. NET для написания сервиса. Мое решение содержит 3 проекта:
- Проект уровня logi c.
- Проект уровня обслуживания Windows.
- Используется проект уровня тестового приложения, используемый для отладки и других целей.
Как на уровне службы Windows, так и на уровне тестового приложения используется уровень logi c для основных функций. Когда я запускаю приложение через тестовый уровень, все работает отлично, но всякий раз, когда я пытаюсь запустить приложение через службу, автономное приложение Python, которое запускает служба, не записывает никаких выходных файлов. Я мог видеть, что приложение Python работает в диспетчере задач, но нигде не выводится. Я полагаю, что код Python дает сбой, но я не могу получить точную причину.
Я пробовал следующие способы отладки проблемы:
- Поиск
Windows
и System32
каталоги для любых связанных выходных файлов, просто чтобы рассмотреть возможность того, чтобы служба имела эти каталоги в качестве рабочего каталога по умолчанию. - Использовали абсолютные пути в коде службы, чтобы убедиться, что Python часть не записывает выходные файлы в какое-то неизвестное место.
- Если клиентский инструмент передал выходной каталог в код Python через аргументы командной строки.
- Написал фиктивное консольное приложение в C# который пишет файл, пытался вызвать его через службу, но он работал нормально и записал файл, как и ожидалось.
- Подозревал, что стандартный ввод-вывод может привести к тому, что приложение Python обработает sh и, таким образом, использовал стандартный ввод-вывод в моей фиктивной программе, но он работал без проблем.
- Попытка дать длинное задание коду Python, который должен был Чтобы выполнить полностью, потребуется около 30 минут, но скрипт Python запустился и немедленно закрылся, что, по сути, является надежным доказательством теории о том, что в какой-то момент происходит сбой.
- Попытка запустить службу с моим невысоким Windows пользователь вместо Local System pseudouser.
- Попробовал настроить службу для возможности взаимодействия с рабочим столом.
У меня тут нет идей. В каком направлении мне следует искать?
Просто примечание, если это важно: я использую System.Diagnostics.Process
для запуска сценария Python.