2010-10-22 65 views
0

因此,我在Django中編寫了一個基本的feed聚合器/ popurls克隆站點,無法讓Feed更新。在Django中更新Feedparser Feed

對於每個供稿源,我有一個單獨的應用程序來解析並返回請求的信息,爲了簡單起見,我們假設它只是獲取供稿標題。例如:

#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如何在這裏工作的一些重要部分,因爲我根本無法弄清楚。

回答

0

aggregate是一個全局變量,所以函數get_feed_xyz()僅在模塊加載時調用。您需要在index()內更新它。

+0

因此,移動聚合= get_feed_xyz()#+其他飼料等索引()函數應該做的伎倆? – Tony 2010-10-22 17:21:01

+0

根據我對代碼的理解,是的。 – phsiao 2010-10-22 19:11:20