在Django中更新Feedparser源

0 投票
1 回答
857 浏览
提问于 2025-04-16 05:53

我正在用Django写一个简单的聚合网站,类似于popurls,但在更新信息源时遇到了麻烦。

对于每个信息源,我都有一个单独的应用程序来解析并返回请求的信息。为了简单起见,我们就说它只是获取信息源的标题。例如:

#feed source xyz views.py
from django.http import HttpResponse
import feedparser

def get_feed_xyz():
    xyz_feed = "http://www.xyz.com/feed.xml"
    feed = feedparser.parse(xyz_feed)

    info = []
    for entry in feed.entries:
        info.append(entry.title)
    return info

然后我有一个聚合应用程序,它会把所有的链接聚合在一起。

#aggregator views.py
from django.shortcuts import render_to_response
from site.source.views import get_feed_xyz
#etc 

aggregate = get_feed_xyz() # + other feeds etc

def index(request):
    return render_to_response('template.html',{'aggregate' : aggregate})

我遇到的问题是更新信息源……它们不会更新,除非我重启Apache!我试着写了一个feed_update.py来运行get_feed_xyz()这个命令,但网站还是不更新。我觉得我在理解Django的某些基本部分上有些缺失,因为我就是搞不明白。

1 个回答

1

aggregate 是一个全局变量,这意味着它在整个程序中都可以使用。因此,函数 get_feed_xyz() 只会在模块加载的时候被调用一次。你需要在 index() 函数里面更新它。

撰写回答