如何使Python脚本作为服务运行?
我想在CENTOS服务器中运行python脚本" title="python脚本">python脚本:
#!/usr/bin/env pythonimport socket
try:
import thread
except ImportError:
import _thread as thread #Py3K changed it.
class Polserv(object):
def __init__(self):
self.numthreads = 0
self.tidcount = 0
self.port = 843
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind(('100.100.100.100', self.port))
self.sock.listen(5)
def run(self):
while True:
thread.start_new_thread(self.handle, self.sock.accept())
def handle(self,conn,addr):
self.numthreads += 1
self.tidcount += 1
tid=self.tidcount
while True:
data=conn.recv(2048)
if not data:
conn.close()
self.numthreads-=1
break
#if "<policy-file-request/>\0" in data:
conn.sendall(b"<?xml version='1.0'?><cross-domain-policy><allow-access-from domain='*' to-ports='*'/></cross-domain-policy>")
conn.close()
self.numthreads-=1
break
#conn.sendall(b"[#%d (%d running)] %s" % (tid,self.numthreads,data) )
Polserv().run()
我正在使用$ python flashpolicyd.py
它,并且工作正常…问题是:即使关闭ssh控制台后,如何保持此脚本运行?
回答:
我使用此代码来守护我的应用程序。它允许您start/stop/restart
使用以下命令来编写脚本。
python myscript.py startpython myscript.py stop
python myscript.py restart
除此之外,我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启动服务。
这是一个简单的示例,可以助您一臂之力。只需将代码移到一个类中,然后从run
内部的函数中调用它即可MyDeamon
。
import sysimport time
from daemon import Daemon
class YourCode(object):
def run(self):
while True:
time.sleep(1)
class MyDaemon(Daemon):
def run(self):
# Or simply merge your code with MyDaemon.
your_code = YourCode()
your_code.run()
if __name__ == "__main__":
daemon = MyDaemon('/tmp/daemon-example.pid')
if len(sys.argv) == 2:
if 'start' == sys.argv[1]:
daemon.start()
elif 'stop' == sys.argv[1]:
daemon.stop()
elif 'restart' == sys.argv[1]:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)
如果您正在运行使用Upstart的操作系统(例如CentOS
6)-您也可以使用Upstart来管理服务。如果您使用Upstart,则可以按原样保留脚本,只需在下面添加如下内容/etc/init/my-
service.conf
start on started sshdstop on runlevel [!2345]
exec /usr/bin/python /opt/my_service.py
respawn
然后,您可以使用启动/停止/重新启动来管理服务。
例如
start my-servicestop my-service
restart my-service
这里提供了使用新贵的更详细的示例。
以上是 如何使Python脚本作为服务运行? 的全部内容, 来源链接: utcz.com/qa/421126.html