clean up code for tracking failing subscriptions

This commit is contained in:
Kyle Mahan 2015-09-01 00:50:21 +00:00
parent 90a7b44383
commit cf804e6003
3 changed files with 14 additions and 7 deletions

View file

@ -77,7 +77,7 @@ class Feed(db.Model):
last_pinged = db.Column(db.DateTime)
last_response = db.Column(db.Text)
failure_count = db.Column(db.Integer)
failure_count = db.Column(db.Integer, default=0)
def get_feed_code(self):
return self.feed # binascii.hexlify(self.feed.encode())
@ -116,7 +116,7 @@ class Entry(db.Model):
author_name = db.Column(db.String(512))
author_url = db.Column(db.String(512))
author_photo = db.Column(db.String(512))
title = db.Column(db.String(512))
title = db.Column(db.Text)
content = db.Column(db.Text)
content_cleaned = db.Column(db.Text)
# other properties

View file

@ -63,6 +63,9 @@ def tick():
if not feed.last_checked:
return True
if not feed.subscriptions:
return False
if feed.failure_count > 8:
update_interval = datetime.timedelta(days=1)
elif feed.failure_count > 4:
@ -127,7 +130,7 @@ def update_feed(feed_id, content=None,
except:
feed.last_response = 'exception while retrieving: {}'.format(
sys.exc_info()[0])
feed.failure_count = (feed.failure_count or 0) + 1
feed.failure_count += 1
return
if response.status_code // 100 != 2:
@ -136,7 +139,7 @@ def update_feed(feed_id, content=None,
response.text)
feed.last_response = 'bad response while retrieving: {}: {}'.format(
response, response.text)
feed.failure_count = (feed.failure_count or 0) + 1
feed.failure_count += 1
return
feed.failure_count = 0
@ -428,6 +431,7 @@ def process_html_feed_for_new_entries(feed, content, backfill, now):
hfeed = parsed.get('entries', [])
for hentry in hfeed:
current_app.logger.debug('building entry: %s', hentry.get('url'))
entry = hentry_to_entry(hentry, feed, backfill, now)
if entry:
current_app.logger.debug('built entry: %s', entry.permalink)

View file

@ -25,8 +25,11 @@
{% for s in subscriptions %}
<article>
{% if s.feed.failure_count > 0 %}<i class="fa fa-warning"></i> {{ s.feed.failure_count }} Failure(s){% endif %}
{% if s.feed.failure_count > 0 %}
<div>
<i class="fa fa-warning"></i> Last {{ s.feed.failure_count }} Attempt(s) Failed
</div>
{% endif %}
<form class="edit-subscription" action="{{ url_for('.edit_subscription') }}" method="POST">
<input type="hidden" name="id" value="{{ s.id }}"/>
<label>Name</label>
@ -34,7 +37,7 @@
<label>Tags</label>
<input type="text" name="tags" value="{{ s.tags or ''}}"/>
<label>URL</label>
<input type="text" name="feed" value="{{ s.feed.feed }}" disabled />
<input type="text" name="feed" value="{{ s.feed.feed }}" readonly />
<button type="submit">Save Edits</button> <span class="save-status"></span>
</form>