小智 1
您可以使用扭曲方法“deferToThread”来运行阻塞代码而不阻塞MainThread
from twisted.internet.threads import deferToThread
class DownloaderMiddleware:
def process_request(self, request, spider):
return deferToThread(self.run_blocking_code_in_diffrent_thread, request, spider)
def run_blocking_code_in_diffrent_thread(self,request, spider) -> HtmlResponse:
print("Code will block here on a diffrent thread and wont stop MainThread")
request.meta["proxy"] = get_proxy_blocking_call()
return request
Run Code Online (Sandbox Code Playgroud)