我想在views.py文件中創建一個視圖函數,它在特定的時間間隔內運行,而不依賴於請求對象是否可能在django 我正在做一個簡單的項目,使用bs4,request和django抓取Web數據,到目前爲止,我能夠抓取數據並將其呈現給我的django views.py。如何在django中的views.py文件中定義視圖函數
從不同的網站抓取的數據按照下面的格式
news_title = 'were-these-remote-wild-islands'
news_url = 'http://bbc.co.uk/travel/see-the-dark-side-of-climate-change'
和我的視圖函數具有下面的代碼行
from .bbc import bbc_crawler
from .models import News
def collect_data(request):
'''
aggregrate all the news from each
news portal
'''
allnews = []
#return dict obj {'title':'climate change', 'url':'http://bbc.co.uk'}, {'title':'t', 'url':'http://url.com'}
allnews.append(bbc_crawler())
for news in allnews:
for eachnews,link in news.items():
#Problem is for every request the same data pushed to the database, need a solution to push the data after every 5 minutes, without depending on this function
News.objects.create(title=eachnews, url=link, source=source)
return render(request, 'news/index.html', {'allnews':allnews, 'source': source})
與上面的代碼,上述視圖功能的問題只有當我們訪問指向此urls.py文件中定義的此視圖功能的url時才運行
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.news, name="index"),
]
當我刷新該網址時,每次將相同的重複數據存儲在數據庫中。
我想要每5分鐘運行一次抓取程序的解決方案,並將抓取的數據保存到數據庫中。
我在哪裏可以在views.py文件中運行爬網程序,這樣我就可以在每5分鐘內保存數據而不需要複製數據,也不依賴於請求對象。我想每5分鐘將檢索到的數據保存在django數據庫中,
如何做到這一點,目前的問題是隻有刷新或請求頁面時才保存數據。
我保存的數據,而不依賴於所述請求對象在數據庫
配置芹菜任務,從視圖中調用,並在那裏重複。 –
好吧我會盡力做到這一點 – kemumaki