對於基於POSIX的系統,使用Pylons和WMI模塊一起對一些機器執行一些基本系統監控,一切都很簡單 - 對於Windows - 沒那麼多。使用Pylons和WMI發佈「在發佈IUnknown時出現Win32異常...」錯誤使用Pylons和WMI
向Pylons服務器發出請求以獲取當前CPU,但它運行不正常,或至少與WMI模塊一起工作。首先,我只是做了(某事)這樣的:
c = wmi.WMI()
for cpu in c.Win32_Processor():
value = cpu.LoadPercentage
然而,訪問通過塔這個模塊(GET http://ip:port/cpu)時,給了我一個錯誤:
raise x_wmi_uninitialised_thread ("WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex]")
x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>
在http://timgolden.me.uk/python/wmi/tutorial.html看,我包了代碼根據主題爲「CoInitialize & CoUninitialize」的示例進行編碼,這使代碼正常工作,但它一直在拋出"Win32 exception occurred releasing IUnknown at..."
並且th恩看着http://mail.python.org/pipermail/python-win32/2007-August/006237.html和跟進後,試圖遵循 - 然而pythoncom._GetInterfaceCount()
始終是20
即時猜測這是好歹相關主塔產卵工作線程和垃圾一樣的是,但是我在這裏有點丟失,建議是不錯。
由於提前,
安德斯
編輯:如果你正在做類似的東西,不與WMI模塊麻煩,只需使用http://msdn.microsoft.com/en-us/library/aa394531%28VS.85%29.aspx,你不必擔心線程廢話喜歡這個。
你可以用CoInitialize發佈整個列表嗎? – Dewfy 2010-05-23 12:20:13
沒問題,當我回家的時候,我就明白了。 – Anders 2010-05-23 12:25:47