2017-10-03 2 views
0

J'utilise Sanic (Python) comme serveur web et je suis confronté à un problème avec certaines demandes. Il renvoie une erreur lorsque nous recevons plusieurs requêtes simultanées. La description d'erreur est comme ci-dessous:(sanic) [ERREUR]: Connexion perdue avant réponse écrite

web_1 | 2017-10-03 09:24:49 - (network)[INFO][172.17.0.1:55372]: GET http://localhost:8000/api/order_items/123456 200 38 
web_1 | 2017-10-03 09:24:50 - (network)[INFO][172.17.0.1:55382]: GET http://localhost:8000/api/order_items/123456 200 38 
web_1 | 2017-10-03 09:24:55 - (network)[INFO][172.17.0.1:55392]: GET http://localhost:8000/api/order_items/123456 200 38 
web_1 | 2017-10-03 09:24:56 - (sanic)[ERROR]: Connection lost before response 2343 written @ ('172.17.0.1', 55402) 
web_1 | 2017-10-03 09:24:56 - (network)[INFO][172.17.0.1:55412]: GET http://localhost:8000/api/order_items/123456 200 38 
web_1 | 2017-10-03 09:24:57 - (sanic)[ERROR]: Connection lost before response 2343 written @ ('172.17.0.1', 55424) 
web_1 | 2017-10-03 09:24:57 - (network)[INFO][172.17.0.1:55430]: GET http://localhost:8000/api/order_items/123456 200 38 

C'est là Sanic rapporte cette erreur: https://github.com/channelcat/sanic/blob/master/sanic/server.py#L333

Ainsi selon ma compréhension, connexion HTTP est fermeture avant Sanic peut écrire à ce qui est bien, mais je Il suffit de désactiver le comportement et de masquer l'erreur si je souhaite savoir à qui j'ai besoin d'aide

Répondre

0

Il suffit de désactiver le mode de débogage (vous devriez quand vous êtes en production) et le message d'erreur disparaîtra.

+0

Non, le message d'erreur n'a pas été à venir en raison de debug activé. Vous pouvez voir dans les journaux, son classé comme ERREUR. Cependant, j'avais appliqué un correctif pour résoudre le problème. Je posterai cette réponse. – Aqee

0

Le problème a été définitivement corrigé dans Sanic mais il n'a pas encore été publié. Donc, voici une solution temporaire jusqu'à ce que Sanic libère 0.6.1.

class NoConnectionLostFilter(logging.Filter): 
""" while issue not resolved https://github.com/channelcat/sanic/issues/959 """ 
def filter(record): 
    return not record.getMessage().startswith('Connection lost before response written') 

logging.getLogger('root').addFilter(NoConnectionLostFilter) 

Solution Crédits: https://github.com/samael500 Github lien d'émission: https://github.com/channelcat/sanic/issues/959