


Programmation serveur Python : comment les démons sont implémentés
Python est un langage de programmation très populaire, particulièrement largement utilisé dans la programmation réseau. La programmation côté serveur en fait également partie. Dans la programmation côté serveur, les processus démons sont un concept courant. Cet article explique comment implémenter des processus démons dans la programmation serveur Python.
Qu'est-ce qu'un processus démon
Dans le processus d'exécution du programme côté serveur, afin de garantir le fonctionnement stable à long terme du programme, nous devons le convertir en processus démon. Un démon est un processus qui s'exécute en continu en arrière-plan. Ce processus n'occupe pas la console ou la session de connexion et peut être automatiquement redémarré pour garantir que le programme s'exécute pendant une longue période.
Dans les systèmes Linux, les processus démons sont généralement implémentés via l'appel système fork(). Le processus d'implémentation spécifique est le suivant :
- Appelez fork() pour créer un processus enfant.
- Appelez setsid() dans le processus enfant pour créer une nouvelle session.
- Appelez à nouveau fork() dans le processus enfant pour empêcher le processus enfant de devenir le processus principal de la session terminale.
- Fermez tous les descripteurs de fichiers.
- Redirigez l'entrée, la sortie et la sortie d'erreur standard vers /dev/null.
En Python, nous pouvons créer un processus démon en remplaçant la fonction run() du processus parent. L'implémentation spécifique est la suivante :
import os import sys class Daemon: def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): self.stdin = stdin self.stdout = stdout self.stderr = stderr self.pidfile = pidfile def daemonize(self): if os.path.exists(self.pidfile): raise RuntimeError('PID file %s already exists' % self.pidfile) # First fork (detaches from parent) try: if os.fork() > 0: sys.exit(0) except OSError as e: raise RuntimeError('fork #1 failed: %d (%s)' % (e.errno, e.strerror)) os.chdir('/') os.umask(0) os.setsid() # Second fork (relinquish session leadership) try: if os.fork() > 0: sys.exit(0) except OSError as e: raise RuntimeError('fork #2 failed: %d (%s)' % (e.errno, e.strerror)) # Flush I/O buffers sys.stdout.flush() sys.stderr.flush() # Redirect standard file descriptors with open(self.stdin, 'rb', 0) as f: os.dup2(f.fileno(), sys.stdin.fileno()) with open(self.stdout, 'ab', 0) as f: os.dup2(f.fileno(), sys.stdout.fileno()) with open(self.stderr, 'ab', 0) as f: os.dup2(f.fileno(), sys.stderr.fileno()) # Write pidfile with open(self.pidfile, 'w') as f: print(os.getpid(), file=f) def start(self): self.daemonize() self.run() def stop(self): if os.path.exists(self.pidfile): with open(self.pidfile) as f: os.kill(int(f.read()), signal.SIGTERM) os.remove(self.pidfile) def restart(self): self.stop() self.start() def run(self): raise NotImplementedError
Dans le code ci-dessus, nous créons un processus démon Python en implémentant une classe nommée Daemon. Parmi eux, la méthode self.daemonize() implémente le processus de création du processus démon, la méthode self.start() démarre le processus démon, la méthode self.stop() arrête le processus démon, la méthode self.restart() redémarre le processus démon et self. La méthode run() doit être réécrite en fonction de la situation réelle.
Lorsque vous utilisez Python pour implémenter un processus démon, vous devez faire attention aux problèmes suivants :
- Les descripteurs de fichiers du processus parent et du processus enfant sont indépendants les uns des autres, et il peut y avoir un échec d'ouverture du processus déposer. Pour éviter que cela ne se produise, vous devez utiliser des chemins absolus pour les fichiers que vous souhaitez ouvrir.
- Le flux de fichiers n'est pas accessible via sys.stdout et sys.stderr dans le processus démon. Par conséquent, ces flux de fichiers doivent être redirigés vers des fichiers pour faciliter la visualisation des journaux.
- Assurez-vous de faire attention au traitement du signal dans le processus démon, car le processus démon s'exécute pendant une longue période et peut mourir en raison de fuites de mémoire et d'autres problèmes. Il doit être redémarré à temps lorsque des conditions anormales se produisent.
- Les opérations liées au terminal ne peuvent pas être effectuées dans le processus démon, telles que l'obtention de la largeur et de la hauteur du terminal.
Résumé
Cet article présente comment implémenter des processus démons dans la programmation serveur Python. La création d'un démon Python est relativement simple, mais sa stabilité et sa gestion des erreurs nécessitent plus d'attention. Grâce à l'introduction de cet article, les lecteurs peuvent apprendre à utiliser Python pour créer un processus démon stable et fiable afin de garantir le fonctionnement stable à long terme des programmes côté serveur Python.
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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Sujets chauds











PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Pour exécuter le code Python dans le texte sublime, vous devez d'abord installer le plug-in Python, puis créer un fichier .py et écrire le code, et enfin appuyez sur Ctrl B pour exécuter le code, et la sortie sera affichée dans la console.

L'écriture de code dans Visual Studio Code (VSCODE) est simple et facile à utiliser. Installez simplement VScode, créez un projet, sélectionnez une langue, créez un fichier, écrivez du code, enregistrez-le et exécutez-le. Les avantages de VSCOD incluent la plate-forme multiplateuse, gratuite et open source, des fonctionnalités puissantes, des extensions riches et des poids légers et rapides.

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.

L'exécution du code Python dans le bloc-notes nécessite l'installation du plug-in exécutable Python et du plug-in NPEXEC. Après avoir installé Python et ajouté un chemin à lui, configurez la commande "python" et le paramètre "{current_directory} {file_name}" dans le plug-in nppexec pour exécuter le code python via la touche de raccourci "F6" dans le bloc-notes.
