


Notes de lecture du code source de la bouteille (1) : WSGI
Avant-propos
Bottle est un framework web Python. L'ensemble du framework ne contient qu'un seul fichier, moins de 4 000 lignes de code et aucune dépendance autre que la bibliothèque standard Python. Cependant, il inclut des fonctions communes aux frameworks Web telles que le routage, les modèles et les plug-ins. Il n'y a pas de meilleur moment que de lire le code source de Bottle pour comprendre ce qu'est un framework web et comment il fonctionne. Puisque Bottle est un framework qui prend en charge WSGI, avant de lire le code source, comprenons d'abord ce qu'est WSGI.
Remarque : La version de Bottle utilisée dans cet article est la 0.12.13.
WSGI
Les serveurs Web généraux ne peuvent gérer que des pages statiques. Si du contenu dynamique est impliqué, le serveur doit interagir avec des langages serveur tels que Java/Python/Ruby et leur transmettre le contenu pour traitement. Étant donné que la plupart des serveurs Web sont écrits en C, ils ne peuvent pas exécuter directement le langage du serveur, un pont est donc nécessaire entre les deux (dans les applications pratiques, un serveur d'applications est généralement ajouté entre le serveur Web et l'application WSGI pour prendre en charge WSGI). En Python, WSGI est un tel pont. La mise en œuvre de WSGI est divisée en deux parties, l'une est le serveur et l'autre est l'application. Voyons à quoi ressemble chacun d’eux et comment les deux fonctionnent ensemble.
1 class Server: 2 3 def __init__(self, server_address): 4 self.server_address = server_address 5 6 def set_app(self, application): 7 self.app = application 8 9 def serve_forever(self):10 while True:11 # socket.accept()12 if request_comein():13 self.handle_request()14 15 def handle_request(self):16 request_data = self.get_request()17 self.parse_request(request_data)18 environ = self.get_environ()19 result = self.application(environ, self.start_response)20 self.send_response(result)21 22 def start_response(self, status, headers, exc_info):23 pass24 25 def get_environ(self):26 pass27 28 def get_request(self):29 pass30 31 def parse_request(self, text):32 pass33 34 def send_response(self, message):35 pass36 37 38 def make_server(host, port, app, server=Server):39 server = server((host, port))40 server.set_app(app)41 return server42 43 def simple_app(environ, start_response):44 status = '200 OK'45 response_headers = [('Content-type', 'text/plain')]46 start_response(status, response_headers)47 return 'Hello World!'48 49 if __name__ == '__main__':50 server = make_server('localhost', 8080, simple_app)51 server.serve_forever()
Limité par l'espace, ce modèle de serveur omet de nombreux détails. Si vous souhaitez un serveur WSGI simple et fonctionnel, vous pouvez vous référer à Let's Build ici A. Serveur Web.Partie 2.
Après avoir reçu la requête, le serveur analyse les informations contenues dans le message de requête et enregistre le résultat dans un dictionnaire nommé environ. Ensuite, l'application d'application (environ, start_response) est appelée avec environ et la fonction start_response qui traite les informations d'en-tête en tant que paramètres. Enfin, les résultats de l'application sont composés dans une nouvelle réponse et renvoyés au client.
Côté application, une application WSGI est un objet appelable. Il peut s'agir d'une fonction, d'une méthode, d'une classe ou d'une instance avec une méthode __call__
. L'application ci-dessus est une fonction.
Lorsque divers serveurs et applications/frameworks sont développés conformément aux normes WSGI, nous pouvons librement combiner différents serveurs et frameworks en fonction de nos besoins.
L'application la plus simple de Bottle
Après avoir brièvement compris WSGI, nous revenons à Bottle pour observer à quoi ressemble une application Bottle, comment l'exécuter et comment nous différence entre les modèles.
1 from bottle import Bottle, run2 3 app = Bottle()4 5 @app.route('/hello')6 def hello():7 return 'Hello World!'8 9 run(app, host='localhost', port=8080, server='wsgiref')
Maintenant, exécutez ce programme et utilisez le navigateur pour accéder à l'adresse 'localhost:8080/hello' et vous verrez 'Hello World !'
1. Contrairement à l'application ci-dessus, l'application Bottle est une instance. Selon la réglementation WSGI, l'objet Bottle doit implémenter la méthode __call__ :
1 def __call__(self, environ, start_response):2 ''' Each instance of :class:'Bottle' is a WSGI application. '''3 return self.wsgi(environ, start_response)
Cette méthode Bottle.wsgi est donc l'entrée permettant au serveur d'appeler l'objet Bottle.wsgi. Application Bottle, et c'est également le point d'entrée permettant au serveur d'appeler l'application Bottle. Notre point d'entrée pour la lecture du code source.
2. @app.route() Ce décorateur lie une fonction à une URL. Lorsque nous accédons à 'localhost:8080/hello', la fonction hello sera appelée.
3. Le serveur par défaut de Bottle est wsgiref (une simple implémentation de WSGI dans la bibliothèque standard Python). Bien entendu, Bottle a également écrit des adaptateurs pour de nombreux serveurs. Il vous suffit de modifier la valeur de server et la fonction run() trouvera l'adaptateur correspondant en fonction du nom du serveur. Pas besoin d'écrire du code supplémentaire.
fonction d'exécution et code pièce de l'adaptateur :
1 def run(app=None, server='wsgiref', host='127.0.0.1', port=8080, 2 interval=1, reloader=False, quiet=False, plugins=None, 3 debug=None, **kargs): 4 if server in server_names: 5 server = server_names.get(server) 6 if isinstance(server, basestring): 7 server = load(server) 8 if isinstance(server, type): 9 server = server(host=host, port=port, **kargs)10 if not isinstance(server, ServerAdapter):11 raise ValueError("Unknown or unsupported server: %r" % server)12 ...13 server.run(app)14 15 class MeinheldServer(ServerAdapter):16 def run(self, handler):17 from meinheld import server18 server.listen((self.host, self.port))19 server.run(handler)
Enfin
dans cet article , nous avons brièvement présenté la manière dont les serveurs et les applications interagissent sous la norme WSGI. Dans le prochain article, nous continuerons à nous concentrer sur cette application la plus simple et à parler des fonctions de routage liées à @app.route().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer les notes de Xiaohongshu ? Les notes peuvent être modifiées dans l'application Xiaohongshu. La plupart des utilisateurs ne savent pas comment supprimer les notes de Xiaohongshu. Ensuite, l'éditeur propose aux utilisateurs des images et des textes expliquant comment supprimer les notes de Xiaohongshu. un regard ensemble ! Tutoriel d'utilisation de Xiaohongshu Comment supprimer les notes de Xiaohongshu 1. Ouvrez d'abord l'application Xiaohongshu et entrez dans la page principale, sélectionnez [Moi] dans le coin inférieur droit pour accéder à la zone spéciale 2. Ensuite, dans la zone Ma, cliquez sur la page de note comme suit : indiqué ci-dessous, sélectionnez la note que vous souhaitez supprimer ; 3. Accédez à la page de notes, cliquez sur [trois points] dans le coin supérieur droit ; 4. Enfin, la barre de fonctions s'agrandira en bas, cliquez sur [Supprimer] pour terminer.

Les notes supprimées de Xiaohongshu ne peuvent pas être récupérées. En tant que plateforme de partage de connaissances et d'achats, Xiaohongshu offre aux utilisateurs la fonction d'enregistrer des notes et de collecter des informations utiles. Selon la déclaration officielle de Xiaohongshu, les notes supprimées ne peuvent pas être récupérées. La plateforme Xiaohongshu ne propose pas de fonction dédiée à la récupération de notes. Cela signifie qu'une fois qu'une note est supprimée dans Xiaohongshu, qu'elle soit supprimée accidentellement ou pour d'autres raisons, il est généralement impossible de récupérer le contenu supprimé de la plateforme. Si vous rencontrez des circonstances particulières, vous pouvez essayer de contacter l'équipe du service client de Xiaohongshu pour voir si elle peut vous aider à résoudre le problème.

En tant qu'utilisateur de Xiaohongshu, nous avons tous été confrontés à la situation où les notes publiées ont soudainement disparu, ce qui est sans aucun doute déroutant et inquiétant. Dans ce cas, que devons-nous faire ? Cet article se concentrera sur le thème « Que faire si les notes publiées par Xiaohongshu sont manquantes » et vous donnera une réponse détaillée. 1. Que dois-je faire si les notes publiées par Xiaohongshu manquent ? Premièrement, ne paniquez pas. Si vous constatez que vos notes manquent, il est essentiel de rester calme et de ne pas paniquer. Cela peut être dû à une défaillance du système de la plateforme ou à des erreurs opérationnelles. Vérifier les enregistrements de version est facile. Ouvrez simplement l'application Xiaohongshu et cliquez sur « Moi » → « Publier » → « Toutes les publications » pour afficher vos propres enregistrements de publication. Ici, vous pouvez facilement trouver des notes publiées précédemment. 3.Repost. Si trouvé

Liez AppleNotes sur iPhone à l’aide de la fonction Ajouter un lien. Notes : Vous ne pouvez créer des liens entre Apple Notes sur iPhone que si iOS17 est installé. Ouvrez l'application Notes sur votre iPhone. Maintenant, ouvrez la note dans laquelle vous souhaitez ajouter le lien. Vous pouvez également choisir de créer une nouvelle note. Cliquez n'importe où sur l'écran. Cela vous montrera un menu. Cliquez sur la flèche à droite pour voir l'option "Ajouter un lien". Cliquez dessus. Vous pouvez maintenant saisir le nom de la note ou l'URL de la page Web. Ensuite, cliquez sur Terminé dans le coin supérieur droit et le lien ajouté apparaîtra dans la note. Si vous souhaitez ajouter un lien vers un mot, double-cliquez simplement sur le mot pour le sélectionner, sélectionnez "Ajouter un lien" et appuyez sur

Comment ajouter des liens de produits dans les notes dans Xiaohongshu ? Dans l'application Xiaohongshu, les utilisateurs peuvent non seulement parcourir divers contenus mais également faire des achats, il y a donc beaucoup de contenu sur les recommandations d'achat et le bon partage de produits dans cette application si vous êtes un expert. sur cette application, vous pouvez également partager des expériences d'achat, trouver des commerçants pour coopérer, ajouter des liens dans des notes, etc. De nombreuses personnes sont prêtes à utiliser cette application pour faire du shopping, car elle est non seulement pratique, mais elle a également de nombreux experts qui en feront recommandations. Vous pouvez parcourir du contenu intéressant et voir s'il existe des produits vestimentaires qui vous conviennent. Voyons comment ajouter des liens de produits aux notes ! Comment ajouter des liens de produits aux notes de Xiaohongshu Ouvrez l'application sur le bureau de votre téléphone mobile. Cliquez sur la page d'accueil de l'application

En tant que langage de programmation de haut niveau, le langage Python est facile à apprendre, à lire et à écrire et a été largement utilisé dans le domaine du développement de logiciels. Cependant, en raison de la nature open source de Python, le code source est facilement accessible aux autres, ce qui pose certains défis en matière de protection du code source des logiciels. Par conséquent, dans les applications pratiques, nous devons souvent adopter certaines méthodes pour protéger le code source Python et assurer sa sécurité. Dans le domaine de la protection du code source des logiciels, il existe une variété de pratiques d'application parmi lesquelles Python peut choisir. Voici quelques exemples courants

Dans cet article, nous allons vous montrer comment utiliser Microsoft Reading Coach dans Immersive Reader sur un PC Windows. Les fonctionnalités de guidage en lecture aident les étudiants ou les individus à pratiquer la lecture et à développer leurs compétences en lecture. Vous commencez par lire un passage ou un document dans une application prise en charge, et sur cette base, votre rapport de lecture est généré par l'outil Reading Coach. Le rapport de lecture indique votre précision de lecture, le temps qu'il vous a fallu pour lire, le nombre de mots corrects par minute et les mots que vous avez trouvés les plus difficiles lors de la lecture. Vous pourrez également pratiquer les mots, ce qui vous aidera à développer vos compétences en lecture en général. Actuellement, seuls Office ou Microsoft365 (y compris OneNote pour le Web et Word pour We)

En tant que plateforme de partage de style de vie, Xiaohongshu couvre des notes dans divers domaines tels que la nourriture, les voyages et la beauté. De nombreux utilisateurs souhaitent partager leurs notes sur Xiaohongshu mais ne savent pas comment procéder. Dans cet article, nous détaillerons le processus de publication de notes sur Xiaohongshu et explorerons comment bloquer des utilisateurs spécifiques sur la plateforme. 1. Comment publier un didacticiel de notes sur Xiaohongshu ? 1. Inscrivez-vous et connectez-vous : Tout d'abord, vous devez télécharger l'application Xiaohongshu sur votre téléphone mobile et terminer l'enregistrement et la connexion. Il est très important de compléter vos informations personnelles dans le centre personnel. En téléchargeant votre avatar, en remplissant votre pseudo et votre introduction personnelle, vous pouvez permettre aux autres utilisateurs de comprendre plus facilement vos informations et également les aider à mieux prêter attention à vos notes. 3. Sélectionnez le canal de publication : Au bas de la page d'accueil, cliquez sur le bouton « Envoyer des notes » et sélectionnez le canal que vous souhaitez publier.
