Python脚本以服务的方式在windows下运行的配置方法


2024年6月24日 匿名 python 脚本安装成windows服务,在windows启动时自动运行 如 何配置 ChatGPT 要将 Python 脚本安装为 Windows 服务,并在 Windows 启动时自动运行,可以按照以下步 骤操作: 1. 创建 Python 脚本 首先,编写你的 Python 脚本(例如 my_script.py)。

my_script.py

import time import logging logging.basicConfig(filename='my_script.log', level=logging.INFO) def main(): while True: logging.info('Script is running...') time.sleep(60) # 每隔 60 秒记录一次日志 if name == 'main': main() 2. 安装 pywin32 模块 你需要安装 pywin32 模块来处理与 Windows 服务相关的功能。你可以使用 pip 安装: python 复制代码 复 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 你需要安装 pywin32 模块来处理与 Windows 服务相关的功能。你可以使用 pip 安装: pip install pywin32 3. 编写服务脚本 接下来,编写一个 Python 脚本,将你的脚本包装成一个 Windows 服务。创建一个新文件, 例如 my_service.py

my_service.py

import os import sys import time import servicemanager import win32serviceutil import win32service import win32event import logging class MyService(win32serviceutil.ServiceFramework): svc_name = 'MyService' svc_display_name = 'My Python Service' svc_description = 'This is a Python service example.' def init(self, args): win32serviceutil.ServiceFramework.init(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) self.running = True def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.running = False win32event.SetEvent(self.hWaitStop) sh 复制代码 python 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.running = False win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): import my_script servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self.svc_name, '')) while self.running: my_script.main() time.sleep(10) if name == 'main': win32serviceutil.HandleCommandLine(MyService) 4. 安装服务 打开命令提示符(确保使用管理员权限),然后运行以下命令以安装服务: python my_service.py install 5. 启动服务 安装完成后,可以使用以下命令启动服务: python my_service.py start 或者通过 Windows 服务管理器启动服务: 1. 打开服务管理器:按下 Win + R 键,输入 services.msc 并回车。 2. 找到你的服务(名称为 MyService)。 sh 复制代码 sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 1. 打开服务管理器:按下 Win + R 键,输入 services.msc 并回车。 2. 找到你的服务(名称为 MyService)。 3. 右键点击并选择“启动”。 6. 检查日志 你的 Python 脚本会在 my_script.log 中记录日志,检查该文件以确保脚本正在运行。 注意事项 1. 确保你的 Python 环境路径正确。 2. 如果脚本依赖特定的 Python 环境,请确保已激活该环境或提供完整的 Python 可执行文 件路径。 通过这些步骤,你可以将 Python 脚本安装为 Windows 服务,并在系统启动时自动运行。 匿名 Django项目如何配置成windows服务,然后支持随window启动 后自动运行 ChatGPT 要将一个 Django 项目配置成 Windows 服务,并支持随 Windows 启动后自动运行,可以按 照以下步骤操作: 1. 准备 Django 项目 确保你的 Django 项目已经准备好并且可以通过命令行启动。通常,你可以使用以下命令启动 Django 开发服务器: python manage.py runserver 2. 安装 pywin32 模块 你需要安装 pywin32 模块来处理与 Windows 服务相关的功能。你可以使用 pip 安装: sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 你需要安装 pywin32 模块来处理与 Windows 服务相关的功能。你可以使用 pip 安装: pip install pywin32 3. 创建服务脚本 创建一个 Python 脚本来包装你的 Django 项目为一个 Windows 服务。创建一个新文件,例 如 django_service.py

django_service.py

import os import sys import win32serviceutil import win32service import win32event import servicemanager import logging logging.basicConfig(filename='django_service.log', level=logging.INFO) class DjangoService(win32serviceutil.ServiceFramework): svc_name = 'DjangoService' svc_display_name = 'Django Windows Service' svc_description = 'This is a Django project running as a Windows service.' def init(self, args): win32serviceutil.ServiceFramework.init(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) self.running = True def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self running = False sh 复制代码 python 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.running = False win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): os.chdir(r'C:\path\to\your\django\project') # 修改为你的 Django 项目路径 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') # import django django.setup() from django.core.management import execute_from_command_line servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self.svc_name, '')) while self.running: execute_from_command_line(['manage.py', 'runserver', '0.0.0.0:8000']) time.sleep(10) if name == 'main': win32serviceutil.HandleCommandLine(DjangoService) 4. 安装服务 打开命令提示符(确保使用管理员权限),然后运行以下命令以安装服务: python django_service.py install 5. 启动服务 安装完成后,可以使用以下命令启动服务: python django_service.py start sh 复制代码 sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | python django_service.py start 或者通过 Windows 服务管理器启动服务: 1. 打开服务管理器:按下 Win + R 键,输入 services.msc 并回车。 2. 找到你的服务(名称为 DjangoService)。 3. 右键点击并选择“启动”。 6. 检查日志 你的服务会在 django_service.log 文件中记录日志,检查该文件以确保 Django 项目正在运 行。 注意事项 1. 确保你的 Python 环境路径正确。 2. 如果脚本依赖特定的 Python 环境,请确保已激活该环境或提供完整的 Python 可执行文 件路径。 3. 确保所有路径都已正确配置,包括 Django 项目路径和设置模块。 通过这些步骤,你可以将 Django 项目安装为 Windows 服务,并在系统启动时自动运行。 匿名 运行时使用自己通过python -m venv 创建的虚拟环境运行 ChatGPT 要在 Windows 服务中运行 Django 项目,并使用通过 python -m venv 创建的虚拟环境,需 要在服务脚本中指定虚拟环境的路径并激活它。以下是配置步骤: 1. 创建和激活虚拟环境 假设你的虚拟环境路径是 C:\path\to\your\venv,在命令行中使用以下命令创建和激活虚拟 环境: 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 环境: python -m venv C:\path\to\your\venv C:\path\to\your\venv\Scripts\activate 然后安装 Django 和其他依赖项: pip install django 2. 创建服务脚本 创建一个 Python 脚本来包装你的 Django 项目为一个 Windows 服务。以下是一个示例脚本 django_service.py,假设你的 Django 项目路径是 C:\path\to\your\django\project,虚 拟环境路径是 C:\path\to\your\venv

django_service.py

import os import sys import time import win32serviceutil import win32service import win32event import servicemanager import logging import subprocess logging.basicConfig(filename='django_service.log', level=logging.INFO) class DjangoService(win32serviceutil.ServiceFramework): svc_name = 'DjangoService' sh 复制代码 sh 复制代码 python 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | class DjangoService(win32serviceutil.ServiceFramework): svc_name = 'DjangoService' svc_display_name = 'Django Windows Service' svc_description = 'This is a Django project running as a Windows service.' def init(self, args): win32serviceutil.ServiceFramework.init(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) self.running = True def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.running = False win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): os.chdir(r'C:\path\to\your\django\project') # 修改为你的 Django 项目路径 os.environ['DJANGO_SETTINGS_MODULE'] = 'your_project.settings' # 修改为你的 venv_python = r'C:\path\to\your\venv\Scripts\python.exe' # 虚拟环境中的 Pytho manage_py = os.path.join(os.getcwd(), 'manage.py') servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self.svc_name, '')) while self.running: subprocess.call([venv_python, manage_py, 'runserver', '0.0.0.0:8000']) time.sleep(10) if name == 'main': win32serviceutil.HandleCommandLine(DjangoService) 3. 安装服务 打开命令提示符(确保使用管理员权限),然后运行以下命令以安装服务: 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 打开命令提示符(确保使用管理员权限),然后运行以下命令以安装服务: python django_service.py install 4. 启动服务 安装完成后,可以使用以下命令启动服务: python django_service.py start 或者通过 Windows 服务管理器启动服务: 1. 打开服务管理器:按下 Win + R 键,输入 services.msc 并回车。 2. 找到你的服务(名称为 DjangoService)。 3. 右键点击并选择“启动”。 5. 检查日志 你的服务会在 django_service.log 文件中记录日志,检查该文件以确保 Django 项目正在运 行。 注意事项 1. 确保你的虚拟环境路径和 Django 项目路径正确无误。 2. 确保所有依赖项都已安装在虚拟环境中。 3. 在服务脚本中使用绝对路径,以避免路径问题。 通过这些步骤,你可以将 Django 项目安装为 Windows 服务,并在系统启动时自动运行,同 时使用虚拟环境中的 Python 解释器。 sh 复制代码 sh 复制代码 匿名 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 时使用虚拟环境中的 Python 解释器。 匿名 Installing service DjangoService copying host exe 'C:\dev\PythonVirtualEnv\MyBlog\lib\sitepackages\win32\pythonservice.exe' -> 'C:\dev\PythonVirtualEnv\MyBlog\pythonservice.exe' copying helper dll 'C:\dev\PythonVirtualEnv\MyBlog\lib\sitepackages\pywin32_system32\pywintypes310.dll' -> 'C:\Users\Administrator\anaconda3\pywintypes310.dll' Error installing service: 拒绝访问。 (5) (MyBlog) C:\dev\PythonVirtualEnv\MyBlog\Scripts> ChatGPT “拒绝访问”错误通常是由于缺乏必要的权限。在安装 Windows 服务时,确保你以管理员身份 运行命令提示符。此外,确保所有路径和环境变量设置正确。以下是详细步骤来解决这个问 题: 1. 以管理员身份运行命令提示符 确保你以管理员权限运行命令提示符: 1. 按下 Win + S 键,搜索 "cmd" 或 "命令提示符"。 2. 右键点击“命令提示符”,选择“以管理员身份运行”。 2. 修正文件路径和权限 确保文件路径正确,并且你的虚拟环境和项目文件夹有适当的权限。可以通过以下命令检查和 修正权限: icacls "C:\dev\PythonVirtualEnv\MyBlog" /grant Administrator:F /t 3. 修正服务脚本 sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 3. 修正服务脚本 在服务脚本中确保所有路径正确。下面是修正后的服务脚本 django_service.py

django_service.py

import os import sys import time import win32serviceutil import win32service import win32event import servicemanager import logging import subprocess logging.basicConfig(filename='django_service.log', level=logging.INFO) class DjangoService(win32serviceutil.ServiceFramework): svc_name = 'DjangoService' svc_display_name = 'Django Windows Service' svc_description = 'This is a Django project running as a Windows service.' def init(self, args): win32serviceutil.ServiceFramework.init(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) self.running = True def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.running = False win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): os.chdir(r'C:\dev\PythonVirtualEnv\MyBlog') # 修改为你的 Django 项目路径 os.environ['DJANGO_SETTINGS_MODULE'] = 'MyBlog.settings' # 修改为你的 Django python 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | def SvcDoRun(self): os.chdir(r'C:\dev\PythonVirtualEnv\MyBlog') # 修改为你的 Django 项目路径 os.environ['DJANGO_SETTINGS_MODULE'] = 'MyBlog.settings' # 修改为你的 Django venv_python = r'C:\dev\PythonVirtualEnv\MyBlog\Scripts\python.exe' # 虚拟环境 manage_py = os.path.join(os.getcwd(), 'manage.py') servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self.svc_name, '')) while self.running: subprocess.call([venv_python, manage_py, 'runserver', '0.0.0.0:8000']) time.sleep(10) if name == 'main': win32serviceutil.HandleCommandLine(DjangoService) 4. 安装服务 确保在以管理员身份运行的命令提示符中安装服务: python django_service.py install 5. 启动服务 安装完成后,使用以下命令启动服务: python django_service.py start 或者通过 Windows 服务管理器启动服务: 1. 打开服务管理器:按下 Win + R 键,输入 services.msc 并回车。 sh 复制代码 sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | 或者通过 Windows 服务管理器启动服务: 1. 打开服务管理器:按下 Win + R 键,输入 services.msc 并回车。 2. 找到你的服务(名称为 DjangoService)。 3. 右键点击并选择“启动”。 检查日志 服务会在 django_service.log 文件中记录日志,检查该文件以确保 Django 项目正在运行。 通过这些步骤,你应该能够解决“拒绝访问”问题,并成功将 Django 项目配置为 Windows 服 务。 匿名 用批处理bat的方式实现 ChatGPT 使用批处理文件(.bat)来实现将 Django 项目作为 Windows 服务运行,并使用虚拟环境, 涉及到以下步骤: 1. 创建批处理文件:编写批处理文件来激活虚拟环境并启动 Django 服务脚本。 2. 使用 NSSM 工具:NSSM(Non-Sucking Service Manager)是一种方便的工具,可以 将任何可执行程序(包括批处理文件)安装为 Windows 服务。 步骤 1:编写批处理文件 首先,创建一个批处理文件,例如 start_django_service.bat,内容如下: @echo off set "VENV_PATH=C:\dev\PythonVirtualEnv\MyBlog" set "DJANGO_PROJECT_PATH=C:\dev\PythonVirtualEnv\MyBlog" set "PYTHON_EXEC=%VENV_PATH%\Scripts\python.exe" set "MANAGE_PY=%DJANGO_PROJECT_PATH%\manage.py" echo Activating virtual environment... bat 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | set MANAGE_PY=%DJANGO_PROJECT_PATH%\manage.py echo Activating virtual environment... call "%VENV_PATH%\Scripts\activate.bat" echo Starting Django server... call "%PYTHON_EXEC%" "%MANAGE_PY%" runserver 0.0.0.0:8000 步骤 2:下载并安装 NSSM 下载 NSSM 工具:NSSM 官方下载页面 将 NSSM 解压到一个目录中,例如 C:\nssm. 步骤 3:使用 NSSM 安装服务 打开以管理员权限运行的命令提示符,使用 NSSM 将批处理文件安装为服务: C:\nssm\win64\nssm install DjangoService 此命令将打开 NSSM 服务安装界面。进行以下设置: 1. Path: 批处理文件的路径,例如 C:\path\to\start_django_service.bat 2. Startup directory: 批处理文件所在的目录,例如 C:\path\to\ 3. 点击“Install service”按钮。 完整的例子 假设你的 Django 项目位于 C:\dev\PythonVirtualEnv\MyBlog,并且虚拟环境也位于同一目 录中。 1. 创建批处理文件: sh 复制代码 bat 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | @echo off set "VENV_PATH=C:\dev\PythonVirtualEnv\MyBlog" set "DJANGO_PROJECT_PATH=C:\dev\PythonVirtualEnv\MyBlog" set "PYTHON_EXEC=%VENV_PATH%\Scripts\python.exe" set "MANAGE_PY=%DJANGO_PROJECT_PATH%\manage.py" echo Activating virtual environment... call "%VENV_PATH%\Scripts\activate.bat" echo Starting Django server... call "%PYTHON_EXEC%" "%MANAGE_PY%" runserver 0.0.0.0:8000 将此文件保存为 C:\dev\PythonVirtualEnv\MyBlog\start_django_service.bat。 2. 下载并安装 NSSM: 从 NSSM 官方下载页面 下载 NSSM 并解压到 C:\nssm。 3. 使用 NSSM 安装服务: 打开以管理员身份运行的命令提示符,并运行以下命令: C:\nssm\win64\nssm install DjangoService 在 NSSM 界面中进行以下设置: Path: C:\dev\PythonVirtualEnv\MyBlog\start_django_service.bat Startup directory: C:\dev\PythonVirtualEnv\MyBlog 点击“Install service”按钮。 bat 复制代码 sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 | Startup directory: C:\dev\PythonVirtualEnv\MyBlog 点击“Install service”按钮。 启动和管理服务 安装服务后,你可以使用以下命令启动和管理服务: 启动服务: nssm start DjangoService 停止服务: nssm stop DjangoService 重启服务: nssm restart DjangoService 删除服务: nssm remove DjangoService confirm 总结 通过使用批处理文件和 NSSM 工具,可以方便地将 Django 项目配置成 Windows 服务,并 在系统启动时自动运行。这个方法确保了虚拟环境的正确激活和 Django 项目的顺利运行。 sh 复制代码 sh 复制代码 sh 复制代码 sh 复制代码 注册以聊天 举报内容 | 使用条款 | 隐私政策 |