2017-06-15 1 views
0

Mon programme d'écoute RabbitMQ a commencé à lever des exceptions pika.exceptions.BodyTooLongError. Je ne les ai jamais vu avant.Gestion de pika.exceptions.BodyTooLongError

Google révèle très peu de choses sur cette erreur et ses causes.

Le message d'erreur de retraçage que je reçois est:

'NoneType' object has no attribute 'body_size' 
Traceback (most recent call last): 
    File "./foo.py", line 585, in <module> 
    channel.start_consuming() 
    File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 1681, in start_consuming 
    self.connection.process_data_events(time_limit=None) 
... 
    File "/usr/local/lib/python2.7/dist-packages/pika/channel.py", line 1246, in _handle_body_frame 
    self._header_frame.body_size) 
    pika.exceptions.BodyTooLongError: (180, 90) 

Je suis un peu perplexe par cela. NoneType n'a pas d'attribut -error ressemble un peu à un bug, tandis que "Body too long" indique une sorte de situation d'épuisement des ressources, ce qui ne devrait pas poser de problème.

Que dois-je faire avec cela? Mieux vaut quitter et redémarrer le programme? Ignorer l'erreur et supposer que certaines données sont perdues? Le programme en question est un récepteur qui s'abonne à certaines clés de routage pour écouter les messages qui y sont publiés. Il n'y aura donc pas de mécanisme d'accusé de réception pour renvoyer quoi que ce soit à l'expéditeur ou à RabbitMQ pour récupérer les données perdues.

Des idées sur ce qui pourrait en être la cause? Le code client n'a pas changé, mais les messages sont devenus plus fréquents.

Hannu

+0

Vous pouvez également utiliser une bibliothèque AMQP sécurisée pour les threads! par exemple. rabbitpy – eandersson

Répondre

1

J'ai suivi sur GitHub. Sans plus d'informations ou de code pour reproduire de manière fiable ce problème, nous ne pouvons pas le réparer.