我需要運行python腳本,並確保它會在終止後重新啓動。我知道有叫做supervisord的UNIX解決方案。但不幸的是,服務器上我的腳本必須在Windows上運行。你知道什麼工具可以有用嗎? 謝謝有沒有Windows模擬supervisord?
回答
儘管胖胖的聲明here,您可以在Windows中運行帶有Cygwin的Supervisor;事實證明,Cygwin很長一段時間來模擬一個Posix環境,事實上supervisord實際上並沒有改變。不需要學習新的工具,如果您需要在多個平臺上部署複雜的項目,您甚至可以節省相當多的工作。
這裏是我的食譜:
- 如果你還沒有這麼做過,安裝Cygwin。在安裝過程中,選擇Python。
- 從Cygwin終端,照常安裝virtualenv。
創建supervisord一個的virtualenv,然後照常安裝:按照通常的方式
pip install supervisord
配置supervisord。請記住,supervisord將與Cygwin一起運行,因此,您最好使用Cygwin路徑(C:\ myservers \ project1轉換爲Cygwin中的/ cygdrive/c/myservers/project1)。
現在,您可能想要安裝supervisord作爲服務。下面是我如何做到這一點:
cygrunsrv --install supervisord --path /home/Administrator/supervisor/venv/bin/python --args "/home/Administrator/supervisor/venv/bin/supervisord -n -c /home/Administrator/supervisor/supervisord.conf"
轉至Windows服務管理器並啓動服務supervisord剛剛安裝。
第5點安裝supervisord作爲Windows服務,以便您可以從Windows服務管理器控制它(啓動/停止/重新啓動)。但是,您可以使用supervisorctl
的功能照常工作,這意味着您可以簡單地部署舊的配置文件。
您可能想運行您的腳本作爲Windows Service
。爲此,您需要使用python-win32庫。這question有很好的描述你如何去做這件事,以及到其他相關資源的一堆鏈接。這個question也可能有用。
A Windows Service
是你想如何包裝任何需要在Windows上連續運行的腳本。它們可以配置爲在啓動時自動啓動,並處理故障。沒有什麼會阻止任何人殺死流程本身,但爲了處理這種潛在的情況,您可以創建一個bat
文件並使用sc
命令來指示該服務是否正在運行以及是否重新啓動該服務。只需安排bat
文件每60秒運行一次(或任何合理的腳本可能會停止運行)。
作爲Windows服務運行python腳本將使它只能在後臺運行。那還不夠。我的目標是使腳本運行牢不可破。即使有人殺死腳本,腳本也必須重新啓動。 – pss
在這種情況下,使用bat文件,sc命令和系統調度程序來處理'已殺死'進程。看我的編輯。 –
如果你想,在大多數POSIX的操作系統上運行,並且,基於Python一樣supervisord一個supervisord般的進程管理器,那麼你應該看看町是工頭的一個Python端口(基於Ruby):
http://pypi.python.org/pypi/honcho/
它在mac,linux上效果很好,但實際上還沒有windows ...(編輯我的初始答案,我樂觀地說它已經在Windows上工作,基於已被丟棄的拉請求)
這裏有一個提供Windows支持的分支https://github.com/redpie/honcho 和一些正在進行的工作,以支持Windows在這裏https://github.com/nickstenning/honcho/issues/28 ...至少它可能成爲不久的將來可能的解決方案。
還有一個工頭叉支持Windows在這裏:https://github.com/ddollar/foreman-windows可能是爲你工作,但我從來沒有嘗試過。
因此,目前,Windows服務可能是您最好的短期選擇。
本町的最新的TRUNK現在有Windows支持:)使用和享受 –
嗨,律'關於本町的問題:是否真的應該重新啓動失敗的任務,像主管?當我「殺死」一個時,它不會。所以我們必須使用主管和本科的組合嗎?謝謝。 – Ehvince
其實honcho比主管更像工頭。另請參閱https://blog.codeship.com/using-honcho-create-multi-process-docker-container/ –
- 1. 是否有一個java模擬supervisord
- 2. 模擬登錄到沒有GUI的Windows
- 3. 沒有找到windows phone 8模擬器
- 4. 有沒有可能有一個Windows 8模擬器有條件?
- 5. 有沒有辦法模擬windows phone 7模擬器上的墓碑?
- 6. Windows有沒有好的(功能性)神經網絡模擬器?
- 7. 有沒有辦法重新啓動Windows Phone 7模擬器?
- 8. 有沒有辦法模擬Windows 8中的觸摸事件?
- 9. 有沒有什麼方法可以在Windows中模擬LD_LIBRARY_PATH?
- 10. Windows 8.1沒有超V - 無法使用Windows Phone模擬器
- 11. Virtualenv沒有被從supervisord AWS Elasticbeanstalk激活
- 12. supervisord沒有這樣的進程vaultier
- 13. b2body沒有模擬物理
- 14. 模擬器沒有運行
- 15. 有沒有一種工具來模擬/模擬軟件併發?
- 16. 有沒有Galaxy Tab 10.1的模擬器?
- 17. adb-有沒有辦法模擬IME_ACTION _DONE?
- 18. HTC Thunderbolt有沒有模擬器?
- 19. 有沒有辦法模擬QGroupVBoxLayout?
- 20. perl mocking有沒有辦法模擬$?
- 21. WPF InkCanvas有沒有Android模擬器?
- 22. 「模擬」對象有沒有屬性「__getitem__」
- 23. 有沒有OpenFlow支持的模擬器?
- 24. 有沒有tvOS的模擬器?
- 25. 沒有虛擬機的Windows Bash 4.2?
- 26. 是否有Windows的seccomp模擬器
- 27. 模擬事件沒有繼承在Windows Phone 7
- 28. 沒有管理員權限的Windows Azure模擬器
- 29. WIndows電話8模擬器沒有顯示
- 30. 沒有互聯網上的Windows Phone 8模擬器
短暫通知:現在是「pip install supervisor」,它需要python 2.4+,但它不會與任何3+版本一起工作。 – Peon