【发布时间】:2018-01-03 03:10:24
【问题描述】:
我正在创建一个本地响应缓存,我正在为其创建一个 Pipeline,因为我需要根据从站点收集的 ID 存储项目的信息。
现在我还需要创建一个Downloader Middleware,因为根据我之前存储的 ID,我不想用新的Request 访问该站点,所以我在发送之前拦截了Request到服务器,检查该 ID 是否已存在于我的缓存中,如果存在,则仅从我的缓存中返回相同的项目。
现在你看到 Pipeline 和 Middleware 需要一起工作,所以分离看起来不是很干净(我也有两个变量,我想是唯一的),但是当我在他们的各自的设置:
DOWNLOADER_MIDDLEWARES = {
'myproject.urlcache.CachePipelineMiddleware': 1,
}
ITEM_PIPELINES = {
'myproject.urlcache.CachePipelineMiddleware': 800,
}
我得到两个不同的实例(检查构造函数上的日志消息,因此它被创建了两次)。
如何确保只创建一个实例并且不会与我的项目的Pipeline 和Downloader Middleware 功能发生冲突?
【问题讨论】: