我想要一个简单的python web服务器用于以下用例:我想编写一个简单的服务器,它将接受来自运行在Google App Engine上的应用程序的HTTP请求。服务器将接受HTTP请求,然后发送iphone通知。(基本上,我需要这台额外的服务器来解决google应用程序引擎中缺乏套接字支持的问题)。
我想我需要服务器能够与Apple的推送通知服务保持这种持久连接。因此,我需要为此始终打开某种线程。因此,我需要某种类型的web服务器,它可以接受请求,并将其传递给另一个与APNS建立持久连接的线程。
也许是多个进程和一个pythons队列工具来实现它们之间的通信?接受HTTP请求,然后将消息排队到另一个进程?
我想知道一些有经验的人会有什么建议。我开始认为,甚至编写自己的简单服务器也是一个很好的选择(http://fragments.turtlemeat.com/pythonwebserver.php)。
发布于 2011-01-17 10:04:56
一种选择是(适当地命名) SimpleHTTPServer,它是Python标准库的一部分。另一个更灵活但更复杂的选择是用Twisted编写服务器。
发布于 2011-01-17 15:54:45
我一直在使用gevent和bottle编写简单的http服务器--一个示例:
#!/usr/bin/env python
import gevent.monkey
gevent.monkey.patch_all()
import bottle
bottle.debug(True)
import gevent.wsgi
from bottle import route, run, request, response, static_file, abort
@route('/echo')
def echo():
s = request.GET.get('s', 'o hai')
return '<html><head><title>echo server</title></head><body>%s</body></html>\r\n' % (s)
@route('/static/:filename')
def send_static(filename):
root = os.getcwd() + '/static'
return static_file(filename, root=root)
if __name__ == '__main__':
app = bottle.app()
wsgi_server = gevent.wsgi.WSGIServer(('0.0.0.0', 8000), app)
print 'Starting wsgi search on port 8000'
wsgi_server.serve_forever()因此,您可以编写一个简单的服务器,将一个作业放入一个队列(参见gevent.queue),并让另一个worker greenlet处理从队列中读取请求并处理它们……
https://stackoverflow.com/questions/4709303
复制相似问题