Projet

Général

Profil

Bug #21383

indexation: ne pas crasher quand une source de donnée n'est pas dispo

Ajouté par Thomas Noël il y a plus de 6 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
24 janvier 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

From: Cron Daemon <root@combo.dev.entrouvert.org>
To: root@combo.dev.entrouvert.org
Subject: Cron <root@combo> cd / && run-parts --report /etc/cron.hourly

/etc/cron.hourly/combo:
Traceback (most recent call last):
  File "/usr/lib/combo/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/dist-packages/hobo/multitenant/management/commands/tenant_command.py", line 48, in run_from_argv
    klass.run_from_argv(args)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 445, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/python2.7/dist-packages/combo/apps/search/management/commands/update_index.py", line 38, in handle
    return super(Command, self).handle(**options)
  File "/usr/lib/python2.7/dist-packages/haystack/management/commands/update_index.py", line 183, in handle
    return super(Command, self).handle(*items, **options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 623, in handle
    label_output = self.handle_label(label, **options)
  File "/usr/lib/python2.7/dist-packages/haystack/management/commands/update_index.py", line 188, in handle_label
    self.update_backend(label, using)
  File "/usr/lib/python2.7/dist-packages/haystack/management/commands/update_index.py", line 233, in update_backend
    do_update(backend, index, qs, start, end, total, verbosity=self.verbosity, commit=self.commit)
  File "/usr/lib/python2.7/dist-packages/haystack/management/commands/update_index.py", line 96, in do_update
    backend.update(index, current_qs, commit=commit)
  File "/usr/lib/python2.7/dist-packages/haystack/backends/whoosh_backend.py", line 196, in update
    doc = index.full_prepare(obj)
  File "/usr/lib/python2.7/dist-packages/haystack/indexes.py", line 212, in full_prepare
    self.prepared_data = self.prepare(obj)
  File "/usr/lib/python2.7/dist-packages/combo/data/search_indexes.py", line 37, in prepare
    return super(PageIndex, self).prepare(obj)
  File "/usr/lib/python2.7/dist-packages/haystack/indexes.py", line 203, in prepare
    self.prepared_data[field.index_fieldname] = field.prepare(obj)
  File "/usr/lib/python2.7/dist-packages/haystack/fields.py", line 159, in prepare
    return self.convert(super(CharField, self).prepare(obj))
  File "/usr/lib/python2.7/dist-packages/haystack/fields.py", line 79, in prepare
    return self.prepare_template(obj)
  File "/usr/lib/python2.7/dist-packages/haystack/fields.py", line 137, in prepare_template
    return t.render(Context({'object': obj}))
  File "/usr/lib/python2.7/dist-packages/django/template/backends/django.py", line 74, in render
    return self.template.render(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 210, in render
    return self._render(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 202, in _render
    return self.nodelist.render(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 905, in render
    bit = self.render_node(node, context)
  File "/usr/lib/python2.7/dist-packages/django/template/debug.py", line 79, in render_node
    return node.render(context)
  File "/usr/lib/python2.7/dist-packages/django/template/defaulttags.py", line 40, in render
    output = self.nodelist.render(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 905, in render
    bit = self.render_node(node, context)
  File "/usr/lib/python2.7/dist-packages/django/template/debug.py", line 79, in render_node
    return node.render(context)
  File "/usr/lib/python2.7/dist-packages/django/template/defaulttags.py", line 217, in render
    nodelist.append(node.render(context))
  File "/usr/lib/python2.7/dist-packages/django/template/debug.py", line 89, in render
    output = self.filter_expression.resolve(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 648, in resolve
    obj = self.var.resolve(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 789, in resolve
    value = self._resolve_lookup(context)
  File "/usr/lib/python2.7/dist-packages/django/template/base.py", line 849, in _resolve_lookup
    current = current()
  File "/usr/lib/python2.7/dist-packages/combo/data/models.py", line 538, in render_for_search
    return HTMLParser().unescape(strip_tags(self.render(context)))
  File "/usr/lib/python2.7/dist-packages/combo/data/models.py", line 728, in render
    return super(FeedCell, self).render(context)
  File "/usr/lib/python2.7/dist-packages/combo/data/models.py", line 505, in render
    context.update(self.get_cell_extra_context(context))
  File "/usr/lib/python2.7/dist-packages/combo/data/models.py", line 708, in get_cell_extra_context
    feed_response = requests.get(utils.get_templated_url(self.url))
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 596, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 487, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='viva-interactif.com', port=80): Max retries exceeded with url:
/getrss.html?flux=rss_toutes_rubriques (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at
0x7f01fab96cd0>: Failed to establish a new connection: [Errno 110] Connection timed out',))

Faire en sorte que dans ce cas les cellules en panne répondent du vide.


Fichiers

Révisions associées

Révision 82503cdd (diff)
Ajouté par Lauréline Guérin il y a plus de 4 ans

feedcell: do not fail if service is not available (#21383)

Historique

#1

Mis à jour par Thomas Noël il y a plus de 6 ans

  • Description mis à jour (diff)
#2

Mis à jour par Lauréline Guérin il y a plus de 4 ans

  • Assigné à mis à Lauréline Guérin
#3

Mis à jour par Lauréline Guérin il y a plus de 4 ans

je propose de mettre un try/except autour de requests.get

#4

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée
#5

Mis à jour par Lauréline Guérin il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 82503cdd7d6817cd4c17aaad482b7843efef3d51
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue Oct 22 11:19:02 2019 +0200

    feedcell: do not fail if service is not available (#21383)
#6

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF