Projet

Général

Profil

Bug #60098

ValueError: The 'content' attribute has no file associated with it.

Ajouté par Sentry Io il y a plus de 2 ans. Mis à jour il y a 9 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
27 décembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

https://sentry.entrouvert.org/entrouvert/nfrance/issues/54185/

ValueError: The 'content' attribute has no file associated with it.
  File "passerelle/base/models.py", line 828, in run
    job_info = getattr(self.resource, self.method_name)(**self.parameters)
  File "passerelle/contrib/toulouse_smart/models.py", line 313, in add_media_job
    if not wcs_request_file.push():
  File "passerelle/contrib/toulouse_smart/models.py", line 430, in push
    files = {'media': (self.filename, self.content.open('rb'), self.content_type)}
  File "django/db/models/fields/files.py", line 73, in open
    self._require_file()
  File "django/db/models/fields/files.py", line 39, in _require_file
    raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)

error running add_media_job job (The 'content' attribute has no file associated with it.)

Historique

#1

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

  • Projet changé de Suivi des traces à Passerelle
#2

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à mis à Nicolas Roche
#3

Mis à jour par Nicolas Roche il y a plus de 2 ans

Je n'arrive pas à reproduire.
C'est comme si le job avait été joué une première fois (jusqu'au self.content.delete()), puis à nouveau
(ce que je ne confirme pas dans les logs).

#4

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

J'ai cherché un peu, je ne comprends pas non plus l'origine du problème, il faudrait remonter à la demande dans w.c.s. ainsi que voir les logs d'exécution pour l'objet wcs_request associé pour aller plus loin.

#5

Mis à jour par Nicolas Roche il y a plus de 2 ans

il faudrait remonter à la demande dans w.c.s

Dans jenkins on voit <WcsRequestFile: WcsRequestFile object (26)>
(il y a aussi 27 qui été envoyée dans la foulée avec un second appel WS)

   $ ssh toulouse-test-1
   $ sudo -u passerelle passerelle-manage shell -d passerelle.cutm-publik-preprod.nfrance.com

   from passerelle.contrib.toulouse_smart.models import WcsRequestFile
   req = WcsRequestFile.objects.get(id=26)
   req.resource.wcs_form_number
   > '117-2042'

https://demarches-montoulouse.cutm-publik-preprod.nfrance.com/backoffice/management/allo-toulouse-signalements/2042/
Rien de spécial à signaler.

ainsi que voir les logs d'exécution pour l'objet wcs_request associé pour aller plus loin.

   from passerelle.base.models import Job
   Job.objects.get(method_name='create_intervention_job', natural_id__contains=2042).creation_timestamp
   > datetime.datetime(2021, 12, 17, 12, 52, 23, 777537, tzinfo=<UTC>)
   Job.objects.get(method_name='create_intervention_job', natural_id__contains=2042).update_timestamp
   > datetime.datetime(2022, 1, 3, 14, 30, 9, 571783, tzinfo=<UTC>)

   Job.objects.get(method_name='add_media_job', parameters__id=26).creation_timestamp
   > datetime.datetime(2022, 1, 3, 14, 30, 12, 501891, tzinfo=<UTC>)
   Job.objects.get(method_name='add_media_job', parameters__id=26).update_timestamp
   > datetime.datetime(2022, 1, 3, 14, 30, 18, 521990, tzinfo=<UTC>)

On voit que smart c'est réveillé le 3 janvier et que le jobs d'ajout du média n'a été joués qu'une seule fois (créé puis mis à jour en 6 secondes) contrairement à ce que je pensais.

   from passerelle.base.models import ResourceLog
   import datetime

   // création de la demande d'intervention (ok)
   ResourceLog.objects.get(appname='toulouse-smart', slug='smart-preprod', timestamp__gt=datetime.datetime(2022, 1, 3, 14, 30, 9, tzinfo=datetime.timezone.utc), timestamp__lt=datetime.datetime(2022, 1, 3, 14, 30, 10, tzinfo=datetime.timezone.utc)).extra['response_status']
   > 200

   // 6 appels (2 appels au endpoint, 2 requêtes PUT vers smart et 2 notification d'erreur sur les jobs)
   [(x.id, x.timestamp) for x in ResourceLog.objects.filter(appname='toulouse-smart', slug='smart-preprod', timestamp__gt=datetime.datetime(2022, 1, 3, 14, 30, 12, tzinfo=datetime.timezone.utc), timestamp__lt=datetime.datetime(2022, 1, 3, 14, 30, 19, tzinfo=datetime.timezone.utc))]
   > [(2549705, datetime.datetime(2022, 1, 3, 14, 30, 12, 411778, tzinfo=<UTC>)),
   (2549706, datetime.datetime(2022, 1, 3, 14, 30, 12, 697323, tzinfo=<UTC>)),
   (2549707, datetime.datetime(2022, 1, 3, 14, 30, 15, 96643, tzinfo=<UTC>)),
   (2549708, datetime.datetime(2022, 1, 3, 14, 30, 16, 100534, tzinfo=<UTC>)),
   (2549710, datetime.datetime(2022, 1, 3, 14, 30, 18, 349480, tzinfo=<UTC>)),
   (2549711, datetime.datetime(2022, 1, 3, 14, 30, 18, 358980, tzinfo=<UTC>))]

Les logs montre que les 2 requêtes PUT d'ajout des média dans smart ont réussi (200).

   ResourceLog.objects.get(id=2549707).extra['response_status']
   > 200

Bref, j'attends de voir si le bug se reproduit parce que là je cale.

#6

Mis à jour par Nicolas Roche il y a 9 mois

  • Statut changé de Nouveau à Fermé

Je ferme, parce que l'erreur ne s'est pas reproduite.

Formats disponibles : Atom PDF