1

フラスコを使い始めたばかりで、redis を使用してチュートリアルのマイクロブログを作成しようとしています。これが私のアプリです:

from flask import Flask, render_template, request, url_for, redirect
import redis
from datetime import datetime

app = Flask(__name__)
app.config.from_object(__name__)

app.config.update(dict(
    DEBUG = True,
    ))

POOL = redis.ConnectionPool(host='localhost', port=6379, db=0)

@app.route("/")
def index():
    r = redis.StrictRedis(connection_pool = POOL)
    print r
    pipe = r.pipeline()
    print pipe
    last_ten = pipe.zrange('post:created_on', 0, 9)
    print last_ten
    posts = []
    for post in last_ten:
        posts.append(pipe.hgetall('{}{}'.format('post:', post)))


    print posts
    pipe.execute()

    return render_template('index.html', posts)



@app.route('/new', methods = ['POST'])
def addPost():
    r = redis.StrictRedis(connection_pool = POOL)

    title = request.form['title']
    author = request.form['author']
    now = datetime.now()

    pipe = r.pipeline()
    post_format = 'post:'
    pid = pipe.incr('post')
    pipe.hmset('{}{}'.format(post_format,pid), {'title':title, 'author':author})
    pipe.zadd('post:created_on', pid = now)
    pipe.execute()

    return redirect(url_for('index'))

if __name__ == "__main__":
    app.run()

私が走るとき、私python testapp.pyは得る

* Running on http://127.0.0.1:5000/
* Restarting with reloader

ただし、ページが読み込まれるhttp://127.0.0.1:5000/ことも、エラーが返されることもありません。ハングアップし、永遠にロードしようとします。私はしばらくそれを残しましたが、それはまだ続いています。何が原因なのかわかりませんが、ご協力ありがとうございます。

更新:コードの実行中に何が起こっているかを確認するためprintに、ビューにいくつかのステートメントを追加しました。これが端末に出力されたものです。index

* Running on http://127.0.0.1:5000/
* Restarting with reloader
StrictRedis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
StrictPipeline<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
StrictPipeline<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
4

1 に答える 1

0

私は問題を解決したと信じています。問題は、 を開いて、pipelineを呼び出す前にデータベースから取得したデータを操作しようとしたことpipe.executeです。私はまだ全体的な機能を機能させることに取り組んでいますが、これがこの特定の問題を解決した方法です。

于 2014-03-10T18:03:50.107 に答える