我为我的Web应用程序编写了一个python XMLRPC服务器。问题是每当我从shell启动服务器并退出时,xmlrpc服务器也会停止。我尝试从另一个文件执行服务器脚本,认为它将继续在后台运行但不起作用。这是用于启动服务器的代码。
host = 'localhost'
port = 8000
server = SimpleXMLRPCServer.SimpleXMLRPCServer((host, port))
server.register_function(getList)
server.serve_forever()
在shell中我只是>>python MyXmlrpcServer.py
来启动服务器。
如何才能启动服务器并使其保持运行?
答案 0 :(得分:4)
最好使用twisted来创建XML-RPC服务器。因此,您不需要编写自己的服务器,它非常灵活,您可以使用twistd
在后台运行:
#!/usr/bin/env python
import time, datetime, os, sys
from twisted.web import xmlrpc, server
from twisted.internet import reactor
class Worker(xmlrpc.XMLRPC):
def xmlrpc_test(self):
print 'test called!'
port = 1235
r = Worker(allowNone=True)
if __name__ == '__main__':
print 'Listening on port', port
reactor.listenTCP(port, server.Site(r))
reactor.run()
else: # run the worker as a twistd service application: twistd -y xmlrpc_server.py --no_save
from twisted.application import service, internet
application = service.Application('xmlrpc_server')
reactor.listenTCP(port, server.Site(r))
reactor.run()
#internet.TCPServer(port, server.Site(r)).setServiceParent(application)
答案 1 :(得分:4)
$ pip install supervisor
$ echo_supervisord_conf > /etc/supervisord.conf
编辑该配置文件以添加流程定义...
[program:mycoolproc]
directory=/path/to/my/script/dir
command=python MyXmlrpcServer.py
启动supervisord并开始您的流程
$ supervisord
$ supervisorctl start mycoolproc