使用web.py强制执行单线程请求处理

3 multithreading thread-safety web.py

我正在使用web.py框架.出于调试目的,我想强制所有请求由单个线程处理,或使用互斥锁模拟此类行为.我怎样才能做到这一点?

And*_*min 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()
Run Code Online (Sandbox Code Playgroud)

UPD:如果你需要锁定整个应用程序堆栈,那么你可能需要app.wsgifunc使用自己的WSGI中间件.想知道我对这个问题的回答.