2010-03-30 4 views
0

J'envoie des demandes de post à un serveur Pylons (servi par le service paster), et si je les envoie avec une fréquence quelconque, beaucoup n'arrivent pas au serveur. Un à la fois est correct, mais si j'en tire quelques (ou plus) en quelques secondes, seul un petit nombre sera traité. Si j'envoie sans données post, ou avec get, cela fonctionne bien, mais mettre un seul caractère de données dans les champs de poste provoque des pertes massives.Perdre des requêtes 'post' envoyées au serveur Pylons paster

Par exemple, l'envoi de 200, 2 reviendra. En envoyant 100 plus lentement, 10 reviendront. Je fais le formulaire de demandes à l'intérieur d'une application Qt. Tis fonctionnera ok (pas de données):

QString postFields = "" QNetworkRequest demande (qurl ("http://server.com/endpoint")); QNetworkReply * réponse = networkAccessManager-> post (requête, postFields.toAscii());

Et cela se traduira par seulement une fraction des demandes étant traitées:

QString postFields = "" QNetworkRequest demande (qurl ("http://server.com/endpoint")); QNetworkReply * réponse = networkAccessManager-> post (requête, postFields.toAscii());

J'ai joué avec le tournant use_threadpool, et d'autres options (threadpool_workers, threadpool_max_requests = 300), dont certaines combinaisons peuvent modifier légèrement les résultats (10 réponses meilleur des cas à 200) .

Si j'envoie des requêtes similaires à d'autres serveurs (non paster), les réponses reviennent corrects, donc je suis presque certain qu'il s'agit d'un problème de configuration de paster serve.

Toute aide ou conseil grandement apprécié.

Merci

Philip

Répondre

0

Pourriez-vous ajouter la connexion sur le côté Paster/pylônes pour trouver où exactement ces demandes se perdent? Êtes-vous sûr que l'application QT fonctionne correctement, est-ce que cela peut limiter le nombre de connexions simultanées dans QNetworkRequest? AFAIR QT networking utilise un thread séparé pour la connexion allouée à partir du pool de threads. Essayez d'ajouter la gestion des erreurs sur le côté QT.

+0

Merci. Apparemment Qt se comportait bien, c'était le serveur en raison de son manque de support HTTP 1.1. –

1

Merci pour votre réponse. A la suite de cela, il a constaté que le service paster ne supportait que HTTP 1.0 et ne répondait donc pas aux requêtes initiales avec un code 100.

Basculé vers Apache, tout fonctionne maintenant!

Questions connexes