首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Web服务器

Python Web服务器
EN

Stack Overflow用户
提问于 2011-01-17 09:30:52
回答 2查看 2.9K关注 0票数 0

我想要一个简单的python web服务器用于以下用例:我想编写一个简单的服务器,它将接受来自运行在Google App Engine上的应用程序的HTTP请求。服务器将接受HTTP请求,然后发送iphone通知。(基本上,我需要这台额外的服务器来解决google应用程序引擎中缺乏套接字支持的问题)。

我想我需要服务器能够与Apple的推送通知服务保持这种持久连接。因此,我需要为此始终打开某种线程。因此,我需要某种类型的web服务器,它可以接受请求,并将其传递给另一个与APNS建立持久连接的线程。

也许是多个进程和一个pythons队列工具来实现它们之间的通信?接受HTTP请求,然后将消息排队到另一个进程?

我想知道一些有经验的人会有什么建议。我开始认为,甚至编写自己的简单服务器也是一个很好的选择(http://fragments.turtlemeat.com/pythonwebserver.php)。

EN

回答 2

Stack Overflow用户

发布于 2011-01-17 10:04:56

一种选择是(适当地命名) SimpleHTTPServer,它是Python标准库的一部分。另一个更灵活但更复杂的选择是用Twisted编写服务器。

票数 4
EN

Stack Overflow用户

发布于 2011-01-17 15:54:45

我一直在使用gevent和bottle编写简单的http服务器--一个示例:

代码语言:javascript
复制
#!/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处理从队列中读取请求并处理它们……

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4709303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档