是否可以在网络服务器上运行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 2环境下运行python 3脚本吗?
- 2. 我可以让Tomcat作为服务运行来转储堆吗?
- 3. 我可以将我的Python脚本转换为.app吗?
- 4. 使用daemontools运行python脚本作为服务
- 5. 在linux中运行python脚本作为后台服务
- 6. 如何在Linux中运行python脚本作为服务
- 7. 运行python脚本作为cgi apache服务器
- 8. 我可以在ViM中运行当前脚本或脚本吗?
- 9. 我的Azure移动服务可以在本地运行吗?
- 10. 我可以使用WorkflowApplication类运行WCF工作流服务吗?
- 11. 在服务器上运行Python脚本?
- 12. 我可以使用Heroku作为Python服务器吗?
- 13. 我可以从python脚本中找到运行python脚本的可执行文件的路径吗?
- 14. 我作为服务运行
- 15. Linux服务可以作为应用程序运行吗?
- 16. 将powershell脚本作为微服务运行
- 17. 使用特定的python版本运行python脚本作为新贵服务
- 18. 我们可以使用Angular 2作为服务器端脚本吗?
- 19. 可能的服务器运行脚本
- 20. 我正在使用putty连接到服务器,可以运行php脚本吗?如果我能如何运行?
- 21. 我可以将jmeter测试作为脚本导出吗?
- 22. 我可以作为脚本执行单个C#语句吗?
- 23. 我可以使用Apache服务器作为本地网络吗?
- 24. PowerShell脚本运行作为服务行为异常
- 25. 我可以在SQLite命令行上运行脚本吗?
- 26. 在网络上同时运行python脚本。这个可以吗?
- 27. Moblin可以运行(并编译)Python脚本吗?
- 28. 我可以将64位SQL Server作为32位运行吗?
- 29. 我可以执行ipython脚本吗?
- 30. 我可以从Java脚本调用Web服务吗?
有可能,更详细的回答请提供更多信息:您使用的是什么操作系统,您是否要在重新启动时启动服务等。 – 2009-09-14 19:32:28
Windows或Unix环境? – dmeister 2009-09-14 20:03:04
认为网络主机通常具有的“Unix/linux服务器”。 – 2009-09-14 20:11:38