Создание службы windows для подключения python и запуска сервера Django-----
Шаг-1: Откройте Visual Studio, перейдите в меню Файл, выберите Новый проект (Ctrl+Shift+N). Откроется новое окно для создания проекта. В поисковой строке в правом верхнем углу найдите Windows Service (C#). Если вы не получили ни одной службы Windows Service, необходимо правильно установить вашу визуальную студию (установите .NET Desktop Development). Дайте службе имя PythonService и выберите OK.
Шаг-2: После создания проекта сервиса, пользователь получит 04 файла по умолчанию - App.config, Program.cs, ProjectInstaller.cs, Service1.cs
App.config предназначен для конфигурирования данных приложения или создания соединения
Program.cs будет инициировать сервис
.
ProjectInstaller.cs - это установщик для службы. Дважды щелкните на нем. Нажмите правую кнопку и добавьте установщик службы. serviceInstaller1 будет добавлен на serviceProcessInstaller1. Выберите свойство serviceInstaller1, укажите ServieName, измените StartType на Automatic (если необходимо).
.
Перейдите к свойству serviceProcessInstaller1, измените Account на LocalSystem
Шаг-3: Файл Service1.cs будет содержать весь необходимый код для запуска python cmd и выполнения команды python. После этого будет запущен сервер Django. Код для выполнения основной команды python имеет следующий вид-
Это полный исполняемый код для PythonService. Если есть необходимость проверить, запущен сервис или нет, то пользователь может отправить сообщение через нижеприведенный класс и получить конечный результат - запущен или нет.
public class CommonFeature
{
public static void WriteToFile(string Message)
{
string LogStatus = ConfigurationManager.AppSettings.Get("LogStatus");
if (LogStatus != null && LogStatus.ToUpper() == "ON")
{
string path = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string filepath = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\ServiceLog_" + DateTime.Now.Date.ToShortDateString().Replace('/', '_') + ".txt";
if (!File.Exists(filepath))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(filepath))
{
sw.WriteLine(Message);
}
}
else
{
using (StreamWriter sw = File.AppendText(filepath))
{
sw.WriteLine(Message);
}
}
}
}
}