0

非常に初心者です。前もってお詫び申し上げます。自分が何をしているのかわかりませんが、実際に周りを見回しました。

ログインフォームの背後にある数十ページをダウンロードし、GAEで実行して結果をdbingしています。各ページの読み取りとデータベースの書き込みをタスク キューに入れたいと思います。タスク キューに切り替えたとき、セッションの受け渡しに問題があることに気付きました。

urllib2 を使用してオープナーを作成します。

    cj = cookielib.CookieJar()
    session = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    session.addheaders.append(('User-agent', 'Mozilla/4.0'))  
    login_data = urllib.urlencode({ 'username' : 'guest',
                                    'password' : 'guest',
                                    'Submit1'  : 'Submit'})  
    resp = session.open(self.login_page, login_data, timeout=20) 
    self.session = session

以前は、このクラスをヘッドエンドで 1 回だけインスタンス化し、全員が使用できるように 1 つのセッション インスタンス変数を作成してから、コンテキストを維持するためにインスタンス化を渡していました。タスク キューを使用してオブジェクトを渡すことができないため、リクエスト ハンドラーが呼び出されたときに、オープナーまたは Cookie への参照を渡すことができません。

毎回再度ログインしなくても新しいオープナーを作成できるように、オープナーまたは Cookie 情報を保存または渡す方法はありますか? ヘッダー辞書を介して Cookie 情報を各ハンドラーに渡すことはできますか? memcache に何かを詰め込みますか? Cookie を有効なオープナーに戻すには、正確に何を渡す必要がありますか?

上記を通り抜けてくれた人に感謝します。

4

1 に答える 1

1

タスクキューの代わりに遅延ライブラリを介してオブジェクトを渡すことができます。

ただし、信頼性の理由から、オブジェクトをデータストアに保存し、そこへの参照のみをタスクキューに渡すことをお勧めします。

于 2012-04-24T17:04:31.577 に答える