3

私は web.py フレームワークを使用しています。デバッグの目的で、すべてのリクエストを強制的に 1 つのスレッドで処理するか、ミューテックスを使用してそのような動作をシミュレートしたいと考えています。どうやってやるの?

4

2 に答える 2

5

このようなことを提案させてください、しかしそれはあなたのコントローラーメソッド上で現在のアプリケーションスタックだけをロックします。

import web
from threading import Lock

urls = ("/", "Index")


class Index:

    def GET(self):
        # This will be locked
        return "hello world"


def mutex_processor():
    mutex = Lock()

    def processor_func(handle):
        mutex.acquire()
        try:
            return handle()
        finally:
            mutex.release()
    return processor_func

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

app.add_processor(mutex_processor())

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

UPD:アプリケーションスタック全体をロックする必要がある場合は、おそらくapp.wsgifunc独自のWSGIミドルウェアでラップする必要があります。アイデアを得るには、この質問に対する私の答えを確認してください。

于 2012-11-07T18:19:54.100 に答える