Pythonピラミッドの例
私はすでにこれの実装を稼働させていますが、画像が自動変更されていないだけです。私はajaxリクエストを使用して
/basic_stats/graph.png?graph.type=IMAGE
ここで、/ basic_stats/graph.pngは特定のビューに設定したルートです。ルートが期待するpngまたはjpgを返す限り、画像リンクで引数を渡しても、画像スライダーは気になりません。私の場合、バックグラウンドで統計を実行し、画像を/basic_stats/graph.pngのビューであるRedisレイヤーに保存する自動化されたプロセスがありますか?に対してポーリングするように構成されています。次に、request.params ['some_key_value']をクエリして、応答オブジェクトとして画像を返します。そうすれば、ajaxマジックをまったく行う必要はなく、適切な応答オブジェクトを生成するだけです。
__init__。pyから
config.add_route('ImageSlider', '/images/ImageSlider.png')
views.pyから
@view_config(route_name='ImageSlider')
def ImageSlider(request):
imgData = None
if 'graph.type' in request.params:
if request.params['image.name'] == 'ImageSlider1':
r_server = redis.Redis('127.0.0.1')
imgDataObj = r_server.get('ImageSlider1')
del r_server
imgData = pickle.loads(imgDataObj)
elif request.params['image.name'] == 'ImageSlider2':
r_server = redis.Redis('127.0.0.1')
imgDataObj = r_server.get('ImageSlider2')
del r_server
imgData = pickle.loads(imgDataObj)
return Response(body_file=imgData, content_type='image/png')
この例では、Redisを使用してシリアル化された画像データを保存しますが、PILexを使用してFSからファイルを非常に簡単にロードできます。
imgData = Image.open("/images/ImageSlider1.png")
これで、これらの特定の場所で必要な任意の画像でビューを応答させることができます。次に、画像の場所をスライダーに渡します。
スライダーのリンク
src="/images/ImageSlider.png?image.name=ImageSlider1"
src="/images/ImageSlider.png?image.name=ImageSlider2"
そして、ビューに動的に応答する画像を調整させるだけです。Redisを使用すると、キーをタイムアウトし、外部プロセスでリッスン時にキーを再設定して、新しい画像をWebサーバーに提供できます。これは、シフトする画像データとしてはおそらくスケーリングされないことに注意してください。ただし、基本的な統計レポート用の内部アプリケーションの場合は、これを使用して、優れたシームレスな高速性を実現します。上限を確認するための負荷テストは行っていませんが、同時ユーザーはそれほど多くありません。
使用しているフレームワークに関係なく、この例はタスクを実行するためのオプションである必要があります。
Backbone.jsでビューレンダリング呼び出しを連鎖させて任意の更新中に画像srcを変更することもできると思いますが、Backbone.jsのうさぎの穴をまだ十分に理解しておらず、その概念はBackbone.jsに限定されている可能性があります。
Redis
ピラミッド