2011-05-19 117 views
0

我試圖安裝並啓動一個簡單的CherryPy服務器作爲Windows服務。安裝並啓動CherryPy服務器腳本作爲Windows服務(使用sc.exe)

下面是腳本:(去掉了一些線剪短通過命令行手動執行時,它的完全工作)

app = AdminMediaHandler(django.core.handlers.wsgi.WSGIHandler()) 
logged_app = TransLogger(app) 
server = wsgiserver.CherryPyWSGIServer(('127.0.0.1', 8632), logged_app, server_name='localhost', numthreads=20) 

try: 
    server.start() 
except KeyboardInterrupt: 
    server.stop() 

我使用sc.exe安裝和啓動服務。安裝順利,但我似乎無法啓動服務。

使用的命令是:(注意有是在路徑空間,雖然我HANDELING這個用雙引號,和binPath通過命令行手動執行其字符串時,工作)

> sc.exe create "ServiceName" binPath= "\"C:\Path to Python\python.exe\" \"C:\Path to CherryPy Script\cherryserver.py\"" 

> sc.exe start "ServiceName" 

我不斷收到此錯誤,不管試圖開始使用sc.exe或通過services.msc GUI服務:

[SC] StartService FAILED 1053: 

The service did not respond to the start or control request in a timely fashion. 

據我瞭解,這是因爲happenning python.exe不IMPL提供Windows服務API。

我不想從腳本創建.exe,使用py2exe

我發現this answer該建議安裝使用不同的工具的服務比sc.exe,稱爲srvany.exe & instsrv.exe。但是,我無法在Win2K Resource Kit website中找到它們。

是否有人知道如何安裝&作爲Windows成功啓動此.py

有誰知道

回答

0

我最終使用的ServiceInstaller又名SMaster,作爲stated in this answer。給定答案中的網址已損壞,並且找不到工作網址。我剛剛在本地提供srunner.exe

注有另一個障礙,雖然克服,如的ServiceInstaller不能空間在其路徑處理文件。

因此,我使用舊的DOS路徑格式進行服務註冊。

取代登記C:\Program Files\MyApp\python.exe,我註冊了C:\PROGRA~1\MyApp\python.exe

1

我更喜歡nssm將普通腳本作爲服務安裝。 根據您的系統,您可以將nssm.exe複製到C:\ Windows \ system32或C:\ Windows \ SysWOW64目錄中的目錄中。之後,你可以安裝一個服務如下:

nssm install yourservicename 

對於您必須將應用程序路徑設置爲您python.exe Python腳本和參數是腳本的自我。

Basic configuration for nssm

其他常見的命令來啓動/停止/編輯你的服務有:

nssm start yourservicename 
nssm stop yourservicename 
nssm edit yourservicename