0

次のユースケースのための単純なPython Webサーバーが必要です。 Google App Engine上で実行されているアプリケーションからのHTTP要求を受け入れる単純なサーバーを作成します。 サーバーはHTTP要求を受け入れ、その後、iphone通知を送信します。 (基本的に、私はこの余分なサーバーがGoogleアプリケーションエンジンのソケットサポートの欠如を説明するために必要です)。Python Webサーバー

私は、Appleのプッシュ通知サービスとのこの永続的な接続を維持できるようにサーバーが必要だと思います。だから、私はこれのためにいつも開いているスレッドを持っている必要があります。だから私は要求を受け入れることができるいくつかの並べ替えのWebサーバーがAPNSへの永続的な接続で他のスレッドに渡す必要があります。

多分、複数のプロセスと、それらの間でやりとりするためのpythonsキューイングツールのいずれか? HTTPリクエストを受け入れ、メッセージを他のプロセスにエンキューしますか?

私は少し経験のある人が何を示唆しているのだろうと思っていました。私は自分のシンプルなサーバーを書くことさえ良い選択だと思っています(http://fragments.turtlemeat.com/pythonwebserver.php)。

+0

[Notifo](http://notifo.com)は、あなたが望むことを実行でき、1ヶ月に10kまで自由に動作します。また、[課題1164](http://code.google.com/p/googleappengine/issues/detail?id=1164)を参照してください。 –

答えて

4

1つのオプションは、(適切に名前が付けられた)SimpleHTTPServerであり、これはPython標準ライブラリの一部です。もう1つ、より柔軟で複雑なオプションは、サーバをTwistedに書き込むことです。

私はgeventとボトルを使用して簡単なHTTPサーバを書いてきた
3

- 例:

#!/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を参照)、持っている可能性がありキューからの読み込み要求を処理して処理する別のワーカーのグリーンレット。