欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Windows環(huán)境中Python應用服務自啟動及其監(jiān)控問題

 更新時間:2024年06月26日 15:31:16   作者:時尚IT男  
這篇文章主要介紹了Windows環(huán)境中Python應用服務自啟動及其監(jiān)控問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

需求描述

  • 在windows服務器環(huán)境中,python應用服務在服務器重啟時,能自動啟動;
  • 在任務管理器中,能區(qū)分監(jiān)控python應用服務(默認都是python的情況,無法區(qū)分多個python進程);
  • 監(jiān)控python應用服務進程,當應用服務掛掉后,重新啟動服務。

1. Python應用服務自啟動

1.1. 啟動時運行批處理文件

Windows 10/Windows Server 201X具有一個名為“啟動”的已知文件夾,系統(tǒng)每次啟動開始自動運行應用程序、快捷方式和腳本時都會檢查該文件夾,而無需額外配置。

要在Windows啟動時運行腳本,先使用Windows+R快捷鍵打開“運行”對話框。

鍵入命令:shell:startup

C:\Users\xiaoyw\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

寫段測試代碼,做成批處理,放到“啟動”文件夾下。

批處理,命名為startup.bat:

d:
cd \01workspace\study
python TestStartup.py

python示例代碼:

import datetime

now = datetime.datetime.now()
dtime = now.strftime("%Y-%m-%d %H:%M:%S")
print('延遲時間是:', dtime)

with open('startup.txt','w') as f:
    f.write(dtime + ", test ok!")

1.2. 使用任務計劃程序運行批處理文件

使用任務計劃程序在特定時間自動運行批處理文件。

1.3. 注冊服務

注冊服務的優(yōu)勢就在于可以開機自啟動,而在windows上,python不能直接將腳本注冊為服務,需要將其先打包成exe,再將exe注冊為服務。

打包exe,使用pyinstaller打包,安裝好pyinstaller包后,在cmd/pycharm的終端里運行如下代碼打包。

2. 應用服務監(jiān)控

2.1. 自定義python腳本在windows下的進程名

在windows環(huán)境中,部署多個python應用服務時,在任務管理器中監(jiān)控進程時,任務名稱都是python.exe,無法識別是哪個具體任務,造成維護困難。

簡單解決方法是按需拷貝(copy)python.exe文件(python.exe大小只有100k),然后重命名成為pvforecast_py.exe(或者隨便你想要的名字),然后你寫一個批處理文件,內容是start python_myapp1.exe myapp.py。

然后你運行批處理文件,你就會發(fā)現(xiàn)在任務管理器中的詳細信息頁面中出現(xiàn)了python_myapp1.exe。

python.exe大小只有幾十k,多copy幾個也無所謂。比起build成exe還是簡單很多。

批處理文件名稱為PVForecastAPScheduler.bat,代碼如下:

@echo off
D:
cd D:\Python\PVMicrogrid\PVSystem
start pvforecast_py PVForecastAPScheduler.py

測試驗證代碼如下:

import datetime
import pytz
from apscheduler.schedulers.blocking import BlockingScheduler

def test():
    now = datetime.datetime.now()
    dtime = now.strftime("%Y-%m-%d %H:%M:%S")
    print('延遲時間是:', dtime)

    with open('startup1.txt','w') as f:
        f.write(dtime + ", test ok!")
    
scheduler = BlockingScheduler(timezone=pytz.timezone("Asia/Shanghai") )


scheduler.add_job(test, 'cron', second='10', misfire_grace_time=60, id='job1')
try:
    scheduler.start()
except (KeyboardInterrupt, SystemExit):
    pass  

2.2. 守護進程

有時會遇到斷網、硬件設備掉線等情況,需要重新啟動服務,覺得較為麻煩。想仿照linux下的腳本,寫一個windows下的腳本,守護進程,自動檢查自啟動,或發(fā)出報警。

windows下的腳本為monitor.bat文件,下面以啟動***.exe文件為例:

@echo off
:start
choice /t 5 /d y /n >nul
tasklist|find /i "pvforecast_py.exe"
if %errorlevel%==0 (
echo "yes"
) else (
echo "No"
start pvforecast_py.exe  ****.py
)
goto start

其中,

	###定時5s
	choice /t 5 /d y /n >nul     
	 ###如果存在該進程
	if %errorlevel%==0 ( 
	###如果不存在,則自行啟動
	start pvforecast_py.exe  ****.py

3. 把應用程序與批處理文件加入到安全白名單中

加入到白名單中的文件目錄,文件,安全防護工具將信任該軟件,可以直接使用。

以360安全衛(wèi)士為例,在信任區(qū)添加python文件目錄,以及啟動文件夾中的批處理文件。

4. 實踐方案

最初,使用任務計劃程序方式,自動啟動python應用服務,由于受到安全衛(wèi)士的阻止,沒有找到易操作維護任務計劃程序方式,現(xiàn)改為在啟動中部署自動啟動python用于服務,以及增加監(jiān)控方法,提高運維效率。

最后的批處理文件(buildw.bat)如下:

chcp 65001
copy d:\python\python38\python.exe d:\python\python38\pvforecast_py.exe
copy d:\python\python38\python.exe d:\python\python38\pvweather24_py.exe
copy d:\python\python38\python.exe d:\python\python38\pvweather_py.exe
copy d:\python\python38\python.exe d:\python\python38\pvenergy_py.exe

copy D:\Python\PVMicrogrid\PVSystem\PVForecastAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\PVForecastAPScheduler.bat"
copy D:\Python\PVMicrogrid\PVSystem\PVTrainAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\PVTrainAPScheduler.bat"
copy D:\Python\PVMicrogrid\PVSystem\PVAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\PVAPScheduler.bat"
copy D:\Python\PVMicrogrid\EnergyOptimization\EnergyAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\EnergyAPScheduler.bat"

以管理員身份進入CMD命令行窗口:

D:\>buildw.bat

相關批處理命令解釋如下:

注:在 Windows 批處理中,如果路徑中含有中文字符,可能會出現(xiàn)亂碼的情況。

在批處理文件開頭添加以下語句:

chcp 65001

這個命令可以將命令行窗口的字符編碼設置為 UTF-8,從而支持中文字符。

注:如果文件路徑中含有空格,則批處理命令中,使用雙引號引起來。

5. 其他

也可以使用所有用戶的啟動目錄:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

用管理員權限用戶啟動目錄,所有用戶的啟動目錄,批處理都執(zhí)行。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 樹莓派中python獲取GY-85九軸模塊信息示例

    樹莓派中python獲取GY-85九軸模塊信息示例

    本文內容是樹莓派中python獲取GY-85九軸模塊信息的示例,這里使用Python的curses包開發(fā)cli窗口程序,用來實時刷新傳感器的讀數,下面看代碼
    2013-12-12
  • 關于python3安裝pip及requests庫的導入問題

    關于python3安裝pip及requests庫的導入問題

    小編最近快畢業(yè)了,閑著無事學習下python的內容在學習到requsets庫的導入問題時遇到一些問題,通過查找相關資料問題順利解決,今天小編把問題解決思路及注意事項分享給大家供大家參考學習
    2021-05-05
  • python線程join方法原理解析

    python線程join方法原理解析

    這篇文章主要介紹了python線程join方法原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Django+Celery實現(xiàn)動態(tài)配置定時任務的方法示例

    Django+Celery實現(xiàn)動態(tài)配置定時任務的方法示例

    這篇文章主要介紹了Django + Celery 實現(xiàn)動態(tài)配置定時任務的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • python讀出當前時間精度到秒的代碼

    python讀出當前時間精度到秒的代碼

    在本文里小編給各位分享了一篇關于python怎么讀出當前時間精度到秒的內容,對此有需要的朋友們可以學習參考下。
    2019-07-07
  • python KNN算法實現(xiàn)鳶尾花數據集分類

    python KNN算法實現(xiàn)鳶尾花數據集分類

    這篇文章主要介紹了python KNN算法實現(xiàn)鳶尾花數據集分類,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • python cv2截取不規(guī)則區(qū)域圖片實例

    python cv2截取不規(guī)則區(qū)域圖片實例

    今天小編就為大家分享一篇python cv2截取不規(guī)則區(qū)域圖片實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬蟲部分開篇概念講解

    Python爬蟲部分開篇概念講解

    在學習Python爬蟲部分,需要已經學過Python基礎和前端的相關知識,本文對python爬蟲概念及原理給大家詳細介紹,需要的朋友跟隨小編一起看看吧
    2021-04-04
  • python虛擬環(huán)境virtualenv的安裝與使用

    python虛擬環(huán)境virtualenv的安裝與使用

    virtualenv用于創(chuàng)建獨立的Python環(huán)境,多個Python相互獨立,互不影響,它能夠:1. 在沒有權限的情況下安裝新套件 2. 不同應用可以使用不同的套件版本 3. 套件升級不影響其他應用
    2017-09-09
  • python/golang實現(xiàn)循環(huán)鏈表的示例代碼

    python/golang實現(xiàn)循環(huán)鏈表的示例代碼

    這篇文章主要介紹了python/golang如何實現(xiàn)循環(huán)鏈表,幫助大家更好的理解和學習循環(huán)鏈表的實現(xiàn)方法,感興趣的朋友可以了解下
    2020-09-09

最新評論