Bug #60098
ValueError: The 'content' attribute has no file associated with it.
0%
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
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Projet changé de Suivi des traces à Passerelle
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).
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.
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.
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.