0

各サーバーリクエスト間で値を格納するためにスレッドなどを設定することは可能ですか?

スレッドまたはグローバルからの値は、各サーバー要求中にのみ取得/設定されることを理解しています。また、すべてが「マップされた」クラス内で行われるため、この値をコンテキスト外で変更することはできません。

値を設定してリクエストごとに操作するのは素晴らしいことなので、私はただ興味がありますが、後で参照できるようにメモリに格納された変数である可能性があるかどうかはわかりません。

私がこれを言っているのは、Web アプリケーションに関連するセッション、Cookie、およびすべてが、各 GET/POST 要求によってのみ操作されるためです。oこれまでのところ、これは私が持っているものです:

import web
import threading


threadlocal = threading.local()

def set_value():
    setattr(threadlocal, 'mythread', 'threadvalue')


def get_value():
    return getattr(threadlocal, 'mythread', None)




urls = (
    "/set_thread_value", "set_thread_value",
    "/get_thread_value", "get_thread_value"
)


app = web.application(urls, globals())



t_globals = {
    'template_thread': get_value()
}    
render = web.template.render('templates', globals=t_globals)



class set_thread_value:
    def GET(self):

        set_value()

        return get_value()




class get_thread_value:
    def GET(self):

        return get_value()

「set_thread_value」を呼び出すとわかるように、スレッド値を設定して画面に表示されますが、「get_thread_value」を呼び出すと代わりに None が返されます。

また、更新された値でスレッドを表示できるように、スレッドをテンプレートに渡したいことに気付いたかもしれません。

編集:スレッドから値を設定するために、mysql、mongodb、またはその他の保存システムを使用したくありません。

前もって感謝します。

4

1 に答える 1

3

memcache (またはredis )のようなものを使用して、リクエスト間でメモリに保持する必要があるコンテンツと値を保存する必要があります。グローバルに関する関連する質問は次のとおりです。

Python Django グローバル変数

于 2012-11-25T20:32:47.420 に答える