如何让feedparser发送缓存控制头?

2 投票
2 回答
915 浏览
提问于 2025-04-16 03:36

我在一个聚合客户端中使用Python的feedparser,这个客户端是在一个squid代理后面运行的。我希望它在请求中发送一个 cache-control: max-age=600 的头信息,这样我们就能得到比较及时的响应。(目前,代理从缓存中返回的内容,即使在几天后发生了变化,依然是旧的,这虽然是基于一些经验法则的合理过期处理,但对我来说不够好。)

在feedparser中似乎没有直接的接口可以做到这一点,那我该怎么做呢?我其实不想改动源代码。

更新:有一个bug,224,请求添加任意头信息的功能,虽然有部分补丁,但还没有合并。这可能是最干净的解决办法。否则,我似乎需要对urllib或feedparser进行一些修改。真让人头疼。

2 个回答

2

这个参数的意思变了(现在叫做 request_headers),不过有一个新的版本的 feedparser 发布了,应该可以支持这个用法。

2

我觉得有两种解决办法:

1- 等待这个链接中的问题被修复:http://code.google.com/p/feedparser/issues/detail?id=224。我已经提交了一个补丁,可以让你发送 extra_headers={'Cache-control': 'max-age=0'},看看他们是否会接受这个补丁。

2- 在urllib2中做一些修改,给请求加上额外的头信息,这似乎是唯一不需要改动feedparser的解决办法。

如果有更好的解决办法,欢迎分享...

更新 2010-10-29 补丁已经合并到主版本中,现在在等待发布。

撰写回答