def get_feed(rss_url, stats=False): post_ids = [] try: for o in download_feed_return_objects(rss_url): if o is None: continue if isinstance(o, Post): post_ids.append(o.id) session.add(o) try: if len(post_ids): session.commit() except Exception, ex: session.rollback() error_reporter.captureException() logging.exception(ex) return False if len(post_ids) > 0: logging.info(u"Saved %d posts for %s" % (len(post_ids), safe_str(rss_url))) else: logging.info(u"No Posts saved for %s" % safe_str(rss_url)) for id in post_ids: if stats: task('get_post_stats', args=(str(id), )).apply_async() task('index_post', args=(str(id), )).apply_async()
def find_existing_posts(feed_id, post_id_hashes, post_link_hashes): try: return session.query(Post.post_id_hash, Post.link_hash).filter( and_( Post.feed_id == feed_id, or_( Post.post_id_hash.in_(post_id_hashes), Post.link_hash.in_(post_link_hashes), ))) except: session.rollback() error_reporter.captureException() return None
def rss_exists(url): rss_hash = url_hash(url) feed = None try: feed = session.query(Feed).filter_by(rss_hash=rss_hash).first() except: error_reporter.captureException() try: session.rollback() except: error_reporter.captureException() raise return feed