Question

Je suis en train d'écrire en train d'écrire un code evented (en python utilisant gevent) et j'utiliser le nginx comme serveur web et je me sens les deux sont grands. On m'a dit qu'il ya un compromis avec les événements, mais a été incapable de le voir. Quelqu'un peut-il s'il vous plaît faire la lumière?

James

Était-ce utile?

La solution

Le plus gros problème est que, sans fils, un bloc pour un client fera un bloc pour tous les clients. Par exemple, si un client demande une ressource (fichier sur le disque, la mémoire paginée-out, etc.) qui nécessite le système d'exploitation pour bloquer le processus de demande, tous les clients devront attendre. Un serveur multithread peut bloquer tout le seul client et de continuer à servir les autres.

Cela dit, si le scénario ci-dessus est peu probable (qui est, tous les clients demanderont les mêmes ressources), puis évènementielle est la voie à suivre.

Autres conseils

La seule difficulté de programmation evented est que vous ne devez pas bloquer, jamais. Cela peut être difficile à réaliser si vous utilisez des bibliothèques qui ont été conçus avec des fils à l'esprit. Si vous ne contrôlez pas ces bibliothèques, une fourchette () + un message est ipc le chemin à parcourir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top