मैंने बहुत शोध किया और कुछ भी प्रासंगिक काम नहीं किया। मूल रूप से मैं आरएसएस फ़ीड को परिमार्जन करने और पायथन फ्लास्क का उपयोग करके बनाए गए वेबपेज पर तालिका प्रारूप में डेटा को पॉप्युलेट करने का प्रयास कर रहा हूं। मैंने डेटा को डिक्शनरी फॉर्म में स्क्रैप कर दिया है। लेकिन यह वेबपेज पर वास्तविक समय (या हर 5 सेकंड) में डेटा नहीं लाता है।
फॉर्मफीड, rss_feed.py का उपयोग करके आरएसएस फ़ीड को स्क्रैप करने के लिए कोड यहां दिया गया है।
import feedparser
import time
def feed_data():
RSSFeed = feedparser.parse("https://www.upwork.com/ab/feed/jobs/rss?sort=recency&paging=0%3B10&api_params=1&q=&securityToken=2c2762298fe1b719a51741dbacb7d4f5c1e42965918fbea8d2bf1185644c8ab2907f418fe6b1763d5fca3a9f0e7b34d2047f95b56d12e525bc4ba998ae63f0ff&userUid=424312217100599296&orgUid=424312217104793601")
feed_dict = {}
for i in range(len(RSSFeed.entries)):
feed_list = []
feed_list.append(RSSFeed.entries[i].title)
feed_list.append(RSSFeed.entries[i].link)
feed_list.append(RSSFeed.entries[i].summary)
published = RSSFeed.entries[i].published
feed_list.append(published[:len(published)-6])
feed_dict[i] = feed_list
return feed_dict
if __name__=='__main__':
while True:
feed_dict = feed_data()
#print(feed_dict)
#print("==============================")
time.sleep(5)
Time.sleep() का उपयोग करना इस स्क्रिप्ट पर काम करता है। लेकिन जब मैं इसे app.py में आयात करता हूं, तो यह हर 5 सेकंड में पुनः लोड करने में विफल रहता है। फ्लास्क ऐप को चलाने के लिए यहां कोड है, app.py:
from flask import Flask, render_template
import rss_feed
feed_dict = rss_feed.feed_data()
app = Flask(__name__)
@app.route("/")
def hello():
return render_template('home.html', feed_dict=feed_dict)
मैंने APScheduler से भी BackgroundScheduler का उपयोग करने का प्रयास किया। कुछ भी काम का नहीं लगता। फॉर्मफीड का 'ईटैग' और 'संशोधित' किसी कारण से पहचाना नहीं जा रहा है (क्या इसे बहिष्कृत किया गया है?) मैंने मेटा टैग में 'रीफ्रेश' विशेषता का उपयोग करने का भी प्रयास किया। लेकिन वह निश्चित रूप से केवल Jinja2 टेम्प्लेट को अपडेट करता है, न कि कोड को ही:
<meta http-equiv="refresh" content="5">
मैं वास्तव में इस पर अटका हुआ हूं।
यहां (आधा पूर्ण) ऐप का लिंक दिया गया है: https://rss-feed-scraper.herokuapp .com/
2 जवाब
आपका
feed_dict = rss_feed.feed_data()
मॉड्यूल स्तर पर है।
जब पायथन शुरू होता है, तो यह इन पंक्तियों को निष्पादित करता है और जब तक आप अपने ऐप को पुनरारंभ नहीं करते तब तक इसे पुनः लोड नहीं करेंगे।
यदि आप इस विषय में रुचि रखते हैं, तो कृपया runtime vs compile time python
के लिए गूगल करें।
उस ने कहा, मेरा सुझाव है कि आप एक जावास्क्रिप्ट फ़ंक्शन के साथ मतदान करें जो दूरस्थ आरएसएस फ़ीड को हर 5 सेकंड में मतदान करता है।
यह कुछ इस तरह दिखेगा
setInterval(function(){
//code goes here that will be run every 5 seconds.
}, 5000);
मैंने चीजों का एक गुच्छा करने की कोशिश की लेकिन मैंने जो पाया वह इस समस्या का सबसे आसान समाधान था:
from flask import Flask, render_template
import rss_feed
app = Flask(__name__)
feed_dict={}
def update_data(interval):
Timer(interval, update_data, [interval]).start()
global feed_dict
feed_dict = rss_feed.feed_data()
update_data(5)
@app.route("/")
def hello():
#feed_dict = rss_feed.feed_data()
#feed_dict=feed_data()
# time.sleep(5)
return render_template('home.html', feed_dict=feed_dict)
एक साधारण अपडेट_डेटा () ने पूरी समस्या को हल कर दिया, किसी अतिरिक्त मॉड्यूल, जावास्क्रिप्ट, AJAX आदि की आवश्यकता नहीं थी।
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।