以上两个答案都是正确的。但是,考虑到您已经实现了一个拼写服务器,然后将其作为一个. 您可以首先在同一台机器上作为单独的进程运行它 - 在localhost:PORT
. 现在看来你已经有了一个非常简单的二进制协议接口——你可以socket
在阻塞模式下使用标准库的接口实现一个同样简单的 Python 客户端。
但是,我建议使用twisted.web
并公开一个简单的 Web 界面。您可以使用 JSON 来序列化和反序列化数据 - Django 很好地支持这一点。这是一个非常简单的示例:
import json
from twisted.web import server, resource
from twisted.python import log
class Root(resource.Resource):
def getChild(self, path, request):
# represents / on your web interface
return self
class WebInterface(resource.Resource):
isLeaf = True
def render_GET(self, request):
log.msg('GOT a GET request.')
# read request.args if you need to process query args
# ... call some internal service and get output ...
return json.dumps(output)
class SpellingSite(server.Site):
def __init__(self, *args, **kwargs):
self.root = Root()
server.Site.__init__(self, self.root, **kwargs)
self.root.putChild('spell', WebInterface())
要运行它,您可以使用以下骨架.tac
文件:
from twisted.application import service, internet
site = SpellingSite()
application = service.Application('WebSpell')
# attach the service to its parent application
service_collection = service.IServiceCollection(application)
internet.TCPServer(PORT, site).setServiceParent(service_collection)
将您的服务作为另一个一流的服务运行,如果您发现需要,您可以在某天在另一台机器上运行它 - 公开 Web 界面也可以轻松地在反向代理负载均衡器后面横向扩展它。