2010-10-20 4 views
0

Je crée une application de bureau qui nécessite l'autorisation d'un serveur distant avant d'effectuer certaines actions localement.Comment mon application de bureau peut-elle être avertie d'un changement d'état sur un serveur distant?

Quelle est la meilleure façon d'avoir mon application de bureau notifiée lorsque le serveur approuve la demande d'autorisation? L'autorisation prend 20 secondes en moyenne, 5 secondes minimum, avec un délai de 120 secondes.

J'ai considéré interroger le serveur jamais 3 secondes, mais ce serait difficile à l'échelle lorsque je déploie l'application plus largement, et semble inélégant.

J'ai un contrôle total sur la conception de l'API serveur et client. Le serveur utilise web.py sur Ubuntu 10.10, Python 2.6.

+0

Combien de temps (moyenne, min et max) le serveur prend-il pour autoriser le client? – joev

+0

Moyenne de 20 secondes, 5 secondes minimum, délai de 120 secondes. – lfaraone

Répondre

0

Est-ce que l'extrémité distante se bloque pendant l'authentification? Si oui, vous pouvez utiliser un simple select pour bloquer jusqu'à ce qu'il revienne. Une autre façon que je peux penser est de passer une URL de rappel au serveur d'authentification lui demandant de l'appeler quand c'est fait pour que votre application cliente puisse continuer. Quelque chose comme un webhook.

0

Vous devez faire quelque chose d'asynchrone. J'ai toujours été un grand fan de twisted, qui est un cadre pour faire du réseautage asynchrone en python. Il prend en charge un grand nombre de protocoles communs et a la plomberie pour rouler les vôtres. Si la torsion semble un peu exagérée, vous pouvez comparer d'autres frameworks asynchrones here

Questions connexes