是否可以在網絡服務器上運行Python腳本作爲後臺服務?我想爲socket communication.我可以將Python腳本作爲服務運行嗎?
回答
你可以使它成爲一個守護進程。有一個更完整的解決方案的PEP,但我發現這很好。
import os, sys
def become_daemon(our_home_dir='.', out_log='/dev/null', err_log='/dev/null', pidfile='/var/tmp/daemon.pid'):
""" Make the current process a daemon. """
try:
# First fork
try:
if os.fork() > 0:
sys.exit(0)
except OSError, e:
sys.stderr.write('fork #1 failed" (%d) %s\n' % (e.errno, e.strerror))
sys.exit(1)
os.setsid()
os.chdir(our_home_dir)
os.umask(0)
# Second fork
try:
pid = os.fork()
if pid > 0:
# You must write the pid file here. After the exit()
# the pid variable is gone.
fpid = open(pidfile, 'wb')
fpid.write(str(pid))
fpid.close()
sys.exit(0)
except OSError, e:
sys.stderr.write('fork #2 failed" (%d) %s\n' % (e.errno, e.strerror))
sys.exit(1)
si = open('/dev/null', 'r')
so = open(out_log, 'a+', 0)
se = open(err_log, 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
except Exception, e:
sys.stderr.write(str(e))
假設這是Windows做到這一點,看this recipe based on srvany
在XP一樣容易,以後你可以使用SC.EXE程序使用任何.exe文件作爲服務:
>sc create
Creates a service entry in the registry and Service Database.
SYNTAX:
sc create [service name] [binPath= ] <option1> <option2>...
CREATE OPTIONS:
NOTE: The option name includes the equal sign.
type= <own|share|interact|kernel|filesys|rec>
(default = own)
start= <boot|system|auto|demand|disabled>
(default = demand)
error= <normal|severe|critical|ignore>
(default = normal)
binPath= <BinaryPathName>
group= <LoadOrderGroup>
tag= <yes|no>
depend= <Dependencies(separated by/(forward slash))>
obj= <AccountName|ObjectName>
(default = LocalSystem)
DisplayName= <display name>
password= <password>
你可以通過你的腳本啓動Python解釋器作爲參數啓動pythonscript:
python.exe myscript.py
我有一個.py Python腳本。 EXE在哪裏? – 2009-09-14 19:27:26
嘗試py2exe http://www.py2exe.org – Yancy 2009-09-14 19:54:38
你只需啓動python解釋器作爲參數即可:python.exe myscript。py – 2009-09-14 20:06:10
這是非常有幫助的Pypi package這是我用Python編寫的守護進程的基礎。
- 1. Python - 以'python'以外的名稱運行腳本作爲服務
- 2. 運行Python腳本作爲Windows服務
- 3. PHP腳本可以在我的服務器上運行嗎?
- 4. 將python腳本作爲服務運行的問題
- 5. 我可以將Python腳本作爲Glib GModules加載嗎?
- 6. 我可以在python 2環境下運行python 3腳本嗎?
- 7. 我可以讓Tomcat作爲服務運行來轉儲堆嗎?
- 8. 我可以將我的Python腳本轉換爲.app嗎?
- 9. pyvot:我可以從python腳本運行Excel VBA宏嗎?
- 10. URLLib2如果我們將Python腳本作爲win32服務運行,則urlopen不起作用(Windows服務)
- 11. 我可以在ViM中運行當前腳本或腳本嗎?
- 12. 運行python腳本作爲cgi apache服務器
- 13. 使用daemontools運行python腳本作爲服務
- 14. 如何在Linux中運行python腳本作爲服務
- 15. 在後臺運行Python腳本作爲服務
- 16. 在linux中運行python腳本作爲後臺服務
- 17. 我的Azure移動服務可以在本地運行嗎?
- 18. 我可以使用WorkflowApplication類運行WCF工作流服務嗎?
- 19. 在服務器上運行Python腳本?
- 20. 我可以使用Heroku作爲Python服務器嗎?
- 21. Linux服務可以作爲應用程序運行嗎?
- 22. 我可以從python腳本中找到運行python腳本的可執行文件的路徑嗎?
- 23. 我作爲服務運行
- 24. 如何運行我的循環Bash腳本作爲服務?
- 25. 使用特定的python版本運行python腳本作爲新貴服務
- 26. 將powershell腳本作爲微服務運行
- 27. 我們可以使用Angular 2作爲服務器端腳本嗎?
- 28. 可能的服務器運行腳本
- 29. 我正在使用putty連接到服務器,可以運行php腳本嗎?如果我能如何運行?
- 30. 將Python腳本作爲啓動腳本運行時結束?
有可能,更詳細的回答請提供更多信息:您使用的是什麼操作系統,您是否要在重新啓動時啓動服務等。 – 2009-09-14 19:32:28
Windows或Unix環境? – dmeister 2009-09-14 20:03:04
認爲網絡主機通常具有的「Unix/linux服務器」。 – 2009-09-14 20:11:38