我正在获取并缓存(以提高性能)许多URL,大致如下:
import requests
import requests_cache
from multiprocessing.pool import ThreadPool
urls = ['http://www.google.com', ...]
with requests_cache.enabled():
responses = ThreadPool(100).map(requests.get, urls)
然而,我为以下内容收到了许多错误信息:
sqlite3.OperationalError: database is locked
显然,太多的线程同时访问缓存。
那么requests_cache
是否支持某种事务,以便在所有线程完成后才进行写操作?例如:
with requests_cache.enabled():
with requests_cache.transaction():
responses = ThreadPool(100).map(requests.get, urls)