Récent
- Un commutateur de base de données avec HAProxy et HAProxy Runtime API
- Docker Swarm rolling updates
- Masquer les clés primaires de la base de données UUID de votre application web
- Don't Repeat Yourself (DRY) avec Jinja2
- SQLAlchemy, PostgreSQL, nombre maximal de lignes par user
- Afficher les valeurs des filtres dynamiques SQLAlchemy
Les plus consultés
- Utilisation des Python's pyOpenSSL pour vérifier les certificats SSL téléchargés d'un hôte
- Utiliser PyInstaller et Cython pour créer un exécutable Python
- Réduire les temps de réponse d'un Flask SQLAlchemy site web
- Connexion à un service sur un hôte Docker à partir d'un conteneur Docker
- Utiliser UUIDs au lieu de Integer Autoincrement Primary Keys avec SQLAlchemy et MariaDb
- SQLAlchemy : Utilisation de Cascade Deletes pour supprimer des objets connexes
Étiquettes
AiohttpAJAXAlembicAlpineAPIApplication settingsAsyncBabelBeautifulSoupBootstrapCachingCaptchaCeleryColorsCompileCronCryptographyCSRF protectionCythonDatabaseDecoratorDeep LearningDeepLDispatcherMiddleWareDistributionDNSDockerDocker SwarmDocker-composeEmailExceptionsFastAPIFlaskGunicornIconsIMAPInternetISPConfigJavascriptJinja2KubernetesLog fileLoggingMachine LearningMariaDBMessage brokerMultilanguageMultiprocessingPentestingPikaPostfixPostgreSQLProfilingPyInstallerpyOpenSSLPytestRabbitMQRedisrqliteScrapingSecuritySecurity testingSeleniumSlackSQLAlchemyTestingThreadsTimezoneToastsUbuntu TouchUUIDWeb automationWerkzeugWheelsWTFormsYouTubeUn commutateur de base de données avec HAProxy et HAProxy Runtime API
13 août 2024 0
Peter
Un de mes projets nécessitait une base de données à haute disponibilité (n'est-ce pas ce que nous voulons tous ...), ce qui signifie une réplication (asynchrone) et une configuration multi-nœuds. Plusieurs solutions existent, j'en parlerai dans un autre article. Dans ces scénarios, nous avons plusieurs répliques de la base de données principale, et lorsqu'un problème survient, nous passons d'une base ...
Docker Swarm rolling updates
7 juillet 2024 0
Peter
Il y a quelque temps, j'ai écrit qu'il serait préférable de passer à une variante Kubernetes et maintenant ce billet concerne Docker Swarm. Oui, j'utilise encore Docker Swarm parce que j'ai un projet qui l'utilise. J'ai récemment déplacé le développement de Docker vers Docker Swarm, principalement parce qu'avec Docker Swarm vous apprenez les bases de l'orchestration de conteneurs, alors pourquoi ...
Masquer les clés primaires de la base de données UUID de votre application web
29 mars 2024 0
Peter
Lorsque vous créez une application web, vous devez faire très attention à ne pas exposer trop d'informations. Si vous utilisez (auto-incrément) Integer IDs dans votre base de données, vous en exposez probablement déjà trop. Quelques exemples. Une Integer user_id permet de deviner facilement le nombre de nouveaux enregistrements que vous recevez chaque jour. Un Integer order_id permet de ...
Don't Repeat Yourself (DRY) avec Jinja2
20 février 2024 0
Peter
J'ai fait quelques essais avec Jinja2, j'ai créé une petite application Flask , et je me suis dit pourquoi ne pas la partager. Ce que je voulais faire, c'était mettre tous les noms de pages dans un seul fichier modèle. Comme pour Python, lorsque vous écrivez beaucoup de code, vous devez faire attention à ne pas vous répéter avec Jinja2. Très vite, vous vous retrouvez avec de nombreux fichiers ...
SQLAlchemy, PostgreSQL, nombre maximal de lignes par user
5 février 2024 0
Peter
Vous avez une application multi-user utilisant SQLAlchemy et PostgreSQL et vous voulez limiter le nombre de lignes par user d'une certaine table. Par exemple, chaque user peut avoir un maximum de cinq messages. Vous avez besoin d'une opération comme : Verrouiller la table Compter le nombre de messages du user Si le nombre est inférieur à cinq : Ajouter un nouveau message ...
Afficher les valeurs des filtres dynamiques SQLAlchemy
18 janvier 2024 0
Peter
Lorsque j'utilise SQLAlchemy, j'utilise souvent des filtres dynamiques dans mes requêtes. Cela signifie que je commence par une liste avec certaines conditions et que j'ajoute d'autres conditions qui dépendent d'autres variables.Voici une requête avec un filtre statique : # query with static filter product_colors = ['white'] stmt = sa.select(Product).\ where(sa.and( Product.category.in_(my_categ ...
Transfert de données sécurisé grâce au cryptage à Public Key et à pyNaCl
2 décembre 2023 0
Peter
Il s'agit d'un court billet sur le transfert de données en toute sécurité entre deux personnes. Pour cela, nous utilisons le paquet Python pyNaCl pour générer des clés privées et publiques et pour crypter et décrypter les données. J'ai également ajouté le paquet Python keyring pour stocker les private_key et public_key. Ce ...
rqlite : une alternative à haute disponibilité et dist distribuée SQLite
17 octobre 2023 1
Peter
Dans un projet, j'utilise une base de données SQLite . Les données ne sont pas critiques, elles peuvent être rechargées à tout moment. Néanmoins, je ne veux pas qu'une partie de l'application ne réponde plus lorsque la base de données SQLite est temporairement indisponible. Je cherchais une base de données rapide, plus ou moins tolérante aux pannes, et également dist distribuée, afin de pouvoir ...
Dois-je migrer mon Docker Swarm vers Kubernetes ?
15 septembre 2023 0
Peter
Quand on lit des articles sur internet disant que Docker Swarm est mort, on a peur. J'ai un Docker Swarm qui fonctionne et je l'aime bien, c'est facile quand on utilise déjà Docker. Quelles sont les alternatives ? Nous avons toujours lu qu'il n'y avait qu'une seule chose à faire, c'est de migrer vers Kubernetes et d'oublier tout le reste. J'étais à mi-chemin de la migration de Docker à ...
Obtenir une liste des vidéos YouTube d'une personne
7 septembre 2023 0
Peter
Il y a quelques jours, j'ai reçu la question suivante : Pouvez-vous télécharger toutes les vidéos publiques YouTube d'une personne, qui ont été téléchargées entre 2020 et aujourd'hui. Le nombre total de vidéos était d'environ 200. Et non, je n'ai pas pu accéder au compte YouTube de cette personne. Dans ce billet, j'utilise le compte YouTube API pour télécharger les métadonnées requises des vidéos, ...
De Docker-Composer à Docker Swarm : Configs
29 août 2023 0
Peter
Vous avez une application composée d'un certain nombre de projets Docker-Compose, et vous utilisez Docker-Compose pour construire, démarrer et déployer. Vous souhaitez maintenant aller plus loin et déplacer certains des projets Docker-Compose vers un autre serveur. Le choix le plus évident pour ce faire, et à essayer en premier, est Docker Swarm. Vous apprenez ...
Docker-Composer des projets avec des noms de services identiques
25 août 2023 0
Peter
Si nous avons des projets Docker-Compose identiques avec des noms de service identiques, reliés par un réseau Docker , nous devons nous assurer que nous accédons au bon service. Sur un réseau Docker , il y a deux façons d'accéder à un service : Par le nom du service Par le nom du conteneur J'ai plusieurs projets Docker-Compose qui sont presque identiques, chaque projet est dans son propre ...
X automatisation du web et scraping avec Selenium
11 août 2023 0
Peter
Lorsque vous souhaitez récupérer des données sur le web, vous devez savoir ce que vous faites. Vous ne voulez pas surcharger un serveur cible avec des requêtes. Si vous le faites à partir d'un seul endroit, un IP address, vous risquez d'être banni (temporairement). Si vous voulez scraper beaucoup, envisagez d'utiliser un service dédié tel que ZenRows, ...
Aiohttp avec serveurs DNS personnalisés, Unbound et Docker
13 juillet 2023 0
Peter
L'utilisation de aiohttp semble facile, mais ce n'est pas le cas. C'est déroutant. La documentation "Client Quickstart" commence par ce qui suit : Remarque Ne créez pas de session par demande. Le plus souvent, vous avez besoin d'une session par application qui exécute toutes les demandes ensemble. Des cas plus complexes peuvent nécessiter une session par site, par exemple une pour Github ...
Renvoyer uniquement les valeurs d'une liste d'enregistrements de FastAPI
6 juillet 2023 0
Peter
Dans Python, tout est une classe, ce qui signifie que les données du modèle sont similaires à un dictionnaire. Mais les dictionnaires ont des clés. Et lorsque vous renvoyez une liste de plusieurs dictionnaires à partir de FastAPI, la taille des données, clés et valeurs, est généralement deux fois plus importante que la taille des valeurs. Une taille plus importante et un temps plus long signifient ...
Prévenir l'usurpation d'identité IP address à l'aide du filtrage du chemin inverse
15 juin 2023 0
Peter
Ce message concerne l'administration du système et n'a rien à voir avec Python. Alors pourquoi l'afficher ici ? Parce que je pense qu'il y a beaucoup de gens comme moi qui gèrent un ou plusieurs serveurs web et qui rencontrent parfois ces problèmes. Dans l'article précédent, j'ai écrit que mon serveur ISPConfig Debian faisait l'objet d'un balayage de ports, etc. et qu'il apparaissait que 95 % ...
Collecter et bloquer IP addresses avec ipset et Python
21 mai 2023 0
Peter
Si vous avez un serveur connecté à l'internet, vous avez probablement vu ceci dans vos fichiers journaux : beaucoup de requêtes externes illégales essayant d'accéder à vos services. Je maintiens un serveur Debian , et j'utilise Fail2Ban pour la prévention des intrusions. Pratique standard, installer, configurer et oublier. Comme le serveur était mis hors service à certaines heures, j'ai décidé d'y ...
Comment annuler des tâches avec Python Asynchronous IO (AsyncIO)
2 mai 2023 0
Peter
Dans le cadre d'un projet, j'ai utilisé AIOHTTP pour vérifier les réponses de plusieurs sites web distants, URLs. Les URL proviennent d'une liste. Cette liste peut contenir des doublons. Tout allait bien jusqu'à ce que je remarque que certaines réponses avaient également un code de statut : HTTP-429 'Too Many Requests'. Quelle qu'en soit la raison, surcharge, sécurité, nous voulons nous comporter ...
Exécuter une commande Docker dans un conteneur Cron Docker
18 avril 2023 0
Peter
Lorsque vous utilisez Docker, votre application se compose généralement de plusieurs conteneurs Docker . Souvent, vous souhaitez exécuter des scripts à l'intérieur de ces conteneurs à certains moments, par exemple, toutes les cinq minutes, une fois par heure, une fois par jour. C'est là que le planificateur de tâches Cron entre en jeu, et il existe plusieurs options pour y parvenir. Dans cet article, ...
Création d'un Captcha avec Flask, WTForms, SQLAlchemy, SQLite
10 avril 2023
Peter
Dans le passé, j'ai écrit du code pour un Captcha (texte seul) pour un site web Flask . Il s'agit d'une mise à jour. Ici, j'utilise un paquet Pypi pour générer l'image. De plus, j'ai ajouté un bouton de rafraîchissement de l'image Captcha .Vous pouvez essayer le code ci-dessous, il s'agit d'un formulaire d'inscription à une lettre d'information. Bien qu'il s'agisse d'une solution Captcha pour ...