【发布时间】:2017-01-03 01:36:19
【问题描述】:
我正在获取并缓存(为了提高性能)大量的 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)
【问题讨论】:
标签: python caching concurrency python-requests