def do_find_feed( ctx: ActorContext, feed_creation_id: T.int, url: T.url, ): # immediately send message to update status ctx.ask('harbor_rss.update_feed_creation_status', dict( feed_creation_id=feed_creation_id, status=FeedStatus.UPDATING, )) messages = [] def message_handler(msg): LOG.info(msg) messages.append(msg) finder = FeedFinder(url, message_handler=message_handler) found = finder.find() try: feed = _parse_found(found) if found else None except Invalid as ex: message_handler(f'invalid feed: {ex}') feed = None ctx.tell('harbor_rss.save_feed_creation_result', dict( feed_creation_id=feed_creation_id, messages=messages, feed=feed, ))
def do_find_feed( ctx: ActorContext, feed_creation_id: T.int, url: T.url, ): # immediately send message to update status ctx.ask('harbor_rss.update_feed_creation_status', dict( feed_creation_id=feed_creation_id, status=FeedStatus.UPDATING, )) messages = [] def message_handler(msg): LOG.info(msg) messages.append(msg) options = dict(message_handler=message_handler, **_get_proxy_options()) options.update(allow_private_address=CONFIG.allow_private_address) with FeedFinder(url, **options) as finder: found = finder.find() try: feed = _parse_found(found) if found else None except (Invalid, FeedParserError) as ex: LOG.error('invalid feed url=%r: %s', unquote(url), ex, exc_info=ex) message_handler(f'invalid feed: {ex}') feed = None ctx.tell('harbor_rss.save_feed_creation_result', dict( feed_creation_id=feed_creation_id, messages=messages, feed=feed, ))