Un chat-serveur / système de chat basé sur le protocole AMQP (courtier de messages RabbitMQ) écrit en python à l'aide de Tornado et Rabbitmq.
Lien: http://rabbitchat.readthedocs.io/en/latest/index.html
Lien: https://pypi.python.org/pypi/rabbitchat
| Auteur: | Anirban Roy Das |
|---|---|
| E-mail: | [email protected] |
| Copyright (c): | 2017, Anirban Roy Das <[email protected]> |
Vérifiez le dossier rabbitChat/LICENSE pour un avis complet du droit d'auteur.
Rabbitchat est un serveur de discussion très simple qui peut être configuré localement pour discuter dans votre LAN. Il soutient à la fois le chat public entre tous les participants connectés simultanément à un moment particulier et également un chat privé entre ces participants individuels.
Il utilise le protocole AMQP pour implémenter le système de passage de messages en temps réel. AMQP est implémenté dans de nombreuses langues et dans de nombreux logiciels, une fois que RabbitMQ est un courtier de messages implémentant le protocole AMQP.
La connexion est créée à l'aide du protocole SOCKJS. SOCKJS est implémenté dans de nombreuses langues, principalement en JavaScript pour parler aux serveurs en temps réel, qui essaie de créer une connexion bidirectionnelle duplex entre le client (navigateur) et le serveur . Ther Server doit également implémenter le protocole SOCKJS . Ainsi, l'utilisation de la bibliothèque SOCKJS-Tornado qui expose le protocole SOCKJS dans le serveur Tornado.
Il essaie d'abord de créer une connexion WebSocket, et si elle échoue, il se replie à d'autres mécanismes de transport, tels que l'Ajax , le sondage long , etc. Une fois la connexion établie, le serveur de tornade ** (SOCKJS-Tornado) ** se connecte à RabbitMQ via le protocole AMQP en utilisant la bibliothèque client AMQP Python , Pika.
Ainsi, la connexion est le navigateur Web à Tornado à RabbitMQ et vice versa.
| sockjs-client: | Client avancé de JavaScript Websocket |
|---|---|
| Tornade: | Async Python Web Bibliothèque + serveur Web |
| sockjs-tornado: | Implémentation de serveur WebKJS WebSocket pour Tornado |
| AMQP: | Protocole de mise en file d'attente de messages avancé utilisés dans les middleware orientés messages |
| pika: | Bibliothèque client AMQP Python |
| Rabbitmq: | Un courtier de messages implémentant AMQP |
| Pytest: | Python Testing Library and Test Runner avec Awesome Test Disbery |
| pytest-flask: | Pytest Plugin for Flask Apps, pour tester les applications Fask à l'aide de la bibliothèque Pytest. |
| Test-Double d'Uber: | Testez la double bibliothèque pour Python, une bonne alternative à la bibliothèque simulée |
| Jenkins (facultatif): | Un serveur CI auto-hébergé |
| Travis-CI (facultatif): | Un serveur CI hébergé gratuit pour les projecs open source |
| Docker: | Un outil de conteneurisation pour de meilleurs DevOps |
Il existe deux types d'installation. L'une utilisant Rabbitchat comme binaire en installant à partir de PIP et en exécutant directement l'application dans la machine locale. Une autre méthode consiste à exécuter l'application à partir de Docker. D'où un autre ensemble d'étapes d'installation pour le cas d'utilisation Docker.
Pour protéger la fuite de données secrètes et confidentielles via votre git se transforme au dépôt de github public, vérifiez git-secrets .
Ce projet Git Secrets aide à prévenir les fuites de sécrétion par erreur.
Vous voyez, il y a tellement de technologies utilisées mentionnées dans les spécifications technologiques et pourtant les dépendances ne sont que deux. C'est le pouvoir de Docker.
Étape 1 - Installer Docker
Suivez mon autre projet GitHub, où tout ce qui concerne les DevOps et les scripts est mentionné avec la configuration d'un environnement de développement pour utiliser Docker est mentionné.
- Projet: https://github.com/anirbanroydas/devops
Étape 2 - Installer la marque
# (Mac OS) $ Brew Install Automake # (Ubuntu) $ sudo apt-get updat $ sudo apt-get install make
Étape 3 - Installez les dépendances
Installez les dépendances suivantes sur votre machine de développement locale qui sera utilisée dans divers scripts.
$ pip install rabbitchat
Si les dépendances ci-dessus ne sont pas installées par la commande ci-dessus, utilisez les étapes ci-dessous pour les installer une par une.
Étape 1 - Installez PIP
Suivez les méthodes ci-dessous pour installer PIP. L'un d'eux peut vous aider à installer PIP dans votre système.
- Méthode 1 - https://pip.pypa.io/en/stable/installing/
- Méthode 2 - http://ask.xmodulo.com/install-pip-linux.html
- Méthode 3 - Si vous avez installé Python sur Mac OS X via
brew install python, alors PIP est déjà installé avec Python.Étape 2 - Installer Tornado
$ pip install tornadoÉtape 3 - Installez SockJS-Tornado
$ pip install sockjs-tornadoÉtape 4 - Installer Pika
$ pip install pikaÉtape 5 - Installer Rabbitmq
Pour les utilisateurs
Mac1. Brew installer Rabbitmq
$ Brew installer Rabbitmq
- Configurez Rabbitmq, suivez ce lien, celui-ci et celui-ci.
Pour les utilisateurs
Ubuntu/Linux1. Activer le référentiel d'application RabbitMQ
$ echo "Deb http://www.rabbitmq.com/debian/ Testing Main" >> /etc/apt/sources.list2. Ajouter la clé de vérification du package
$ wget -o http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | Sudo apt-clé ajouter -3. Mettez à jour les sources avec notre nouvel ajout d'en haut
$ apt-get update4. Et enfin, télécharger et installer Rabbitmq
$ sudo apt-get install labbitmq-server
- Configurez Rabbitmq, suivez ce lien, celui-ci et celui-ci.
Si vous utilisez le projet dans une configuration CI (comme Travis, Jenkins), alors, à chaque poussée vers GitHub, vous pouvez configurer votre construction Travis Build ou Jenkins. Travis utilisera le fichier .travis.yml et Jenknis utilisera le Jenkinsfile pour faire leur travail. Maintenant, au cas où vous utilisez Travis, puis exécutez les commandes de configuration spécifiques Travis et pour Jenkins, exécutez d'abord les commandes de configuration spécifiques Jenkins. Vous pouvez également utiliser les deux pour comparer entre les performances.
Les touches de configuration lisent les valeurs d'un fichier .env qui a toutes les variables d'environnement exportées. Mais vous remarquerez un exemple de fichier env et non un fichier .env . Assurez-vous de copier le fichier env en .env et modifiez / modifiez les variables réelles avec vos valeurs réelles.
Les fichiers .env ne sont pas engagés à GIT car ils sont mentionnés dans le fichier .gitignore pour éviter toute fuite de données confidentielles.
Après avoir exécuté les commandes de configuration, vous serez présenté avec un certain nombre de clés sécurisées. Copiez-les dans vos fichiers de configuration avant de continuer.
Remarque: il s'agit d'une configuration unique. Remarque: Vérifiez les scripts de configuration à l'intérieur des scripts/ répertoire pour comprendre quelles sont les variables d'environnement dont les clés cryptées sont fournies. Remarque: n'oubliez pas de copier les clés sécurisées à votre .travis.yml ou Jenkinsfile
Remarque: Si vous ne souhaitez pas faire la copie de env dans le fichier .env et modifier les valeurs de variable dans .env avec vos valeurs réelles, vous pouvez simplement modifier le script travis-setup.sh ou jenknis-setup.sh et mettre à jour les valeurs directement. Les scripts sont dans le répertoire scripts/ projet.
Important: vous devez exécuter le script travis-setup.sh ou le script jenkins-setup.sh dans votre machine locale avant de se déployer sur un serveur distant.
Ces étapes crypteront vos variables d'environnement pour sécuriser vos données confidentielles comme les clés API, les clés basées sur Docker, déployer des clés spécifiques.
$ faire Travis-Settup
Ces étapes crypteront vos variables d'environnement pour sécuriser vos données confidentielles comme les clés API, les clés basées sur Docker, déployer des clés spécifiques.
$ faire Jenkins-Settup
Il existe deux types d'utilisation. L'une utilisant Rabbitchat comme binaire en installant à partir de PIP et en exécutant directement l'application dans la machine locale. Une autre méthode consiste à exécuter l'application à partir de Docker. D'où un autre ensemble d'étapes d'utilisation pour le cas d'utilisation Docker.
Après avoir installé les dépendances ci-dessus, et exécuté l'étape de configuration CI (si ce n'est pas en utilisant un serveur CI) ou requis (si vous utilisez un serveur CI), alors exécutez simplement les commandes suivantes pour l'utiliser:
Vous pouvez exécuter et tester l'application dans votre machine de développement locale ou exécuter et tester directement dans une machine distante. Vous pouvez également exécuter et tester dans un environnement de production.
Les commandes ci-dessous commencent tout le monde dans l'environnement de développement. Pour commencer dans un environnement de production, Suffix -prod à chaque commande de marque .
Par exemple, si la commande normale est make start , alors pour l'environnement de production, utilisez make start-prod . Faites cette modification à chaque commande que vous souhaitez exécuter dans un environnement de production.
Exceptions: vous ne pouvez pas utiliser la méthode ci-dessus pour les commandes de test, les commandes de test sont les mêmes pour chaque environnement. De plus, la commande make system-prune est autonome sans variation spécifique de production (reste la même dans tous les environnements).
Démarrer l'application
$ faire propre $ faire la construction $ faire commencer # OU $ docker-compose up -d
Arrêt de la demande
$ faire un arrêt # OU $ docker-compose stop
Supprimer et nettoyer l'application
$ faire propre # OU $ docker-compose RM --Force -V $ echo "y" | Système Docker
Système propre
$ faire du système-prne # OU $ echo "y" | Système Docker
Pour vérifier l'intégralité des journaux des applications
$ faire des chèques-logs # OU $ docker-compose les journaux - suivi --tail = 10
Pour vérifier les journaux de l'application Python
$ faire un chèque-application # OU $ docker-compose les journaux - suivi --tail = 10 identidock
Après avoir installé Rabbitchat via PIP, exécutez simplement les commandes suivantes pour l'utiliser:
Serveur de lapin
1. Pour les utilisateurs Mac
# démarrer normalement $ Rabbitmq-Server # Si vous voulez courir en arrière-plan $ Rabbitmq-Server - Détecté # Commencez à utiliser Brew Revices (ne fonctionne pas avec TMUX) $ Brew Services Rabbitmq Start
2. Pour les utilisateurs Ubuntu/LInux
# démarrer normalement $ Rabbitmq-Server # Si vous voulez courir en arrière-plan $ Rabbitmq-Server - Détecté # Pour commencer à utiliser le service $ Service Rabbitmq-Server Start # Pour arrêter d'utiliser le service $ Service Rabbitmq-Server Stop # Pour redémarrer en utilisant le service $ Service Rabbitmq-Server Redémarrage # Pour vérifier l'état $ Statut de service Rabbitmq-Server
Démarrer le serveur Rabbitchat
$ Rabbitchat [Options]
Options
| --port: | Numéro de port où le serveur de chat commencera |
|---|
Exemple
$ rabbitchat --port = 9191
Arrêter le serveur Rabbitchat
Cliquez sur Ctrl+C pour arrêter le serveur.
Remarque: les tests se font uniquement à l'aide de la méthode Docker. Quoi qu'il en soit, peu importe que vous exécutiez votre application à l'aide de la méthode Docker ou de la méthode autonome. Les tests en sont indépendants.
Maintenant, le test est le principal accord du projet. Vous pouvez tester à bien des égards, à savoir, en utilisant les commandes make comme mentionné dans les commandes ci-dessous, qui automatise tout et vous n'avez rien à savoir, comme la bibliothèque de tests ou le cadre utilisé, comment les tests se produisent, soit directement ou via des conteneurs docker , ou peuvent être des environnements virtuels différents à l'aide de tox . Rien n'est nécessaire pour être connu.
D'un autre côté, si vous souhaitez un contrôle fin sur les tests, vous pouvez les exécuter directement, soit en utilisant des commandes pytest , soit via des commandes tox pour les exécuter dans différents environnements Python ou en utilisant des commandes docker-compose pour exécuter Différentes tests.
Mais exécuter les commandes de Make est Lawasy la stratégie GO TO et l'approche recommandée pour ce projet.
Remarque: Tox peut être utilisé directement, où les conteneurs docker ne seront pas utilisés. Bien que nous puissions essayer d'exécuter tox à l'intérieur de nos Contianers de test que nous utilisons pour exécuter les tests en utilisant les commandes make , mais nous devons ensuite changer le Dockerfile et installer toutes les dépendances python comme python2.7 , python3.x , puis exécuter les commandes tox à l'intérieur des conteneurs docker qui, ensuite les commandes pytest , que nous exécutons actuellement pour effectuer nos tests à l'intérieur des conteneurs de test actuels.
Caveat: La seule mise en garde d'utiliser directement les commandes de fabrication et de ne pas utiliser tox est que nous ne testons que le projet dans un seul environnement python , Nameley python 3.6 .
Pour tout tester
$ faire un test
Toute autre méthode sans utiliser Make impliquera d'écrire beaucoup de commandes. Alors utilisez la commande de fabrication de préférence
Pour effectuer des tests unitaires
$ faire unité de test
Pour effectuer des tests de composants
$ faire un test de test
Pour effectuer des tests contractuels
$ faire un contrat de test
Pour effectuer des tests d'intégration
$ faire l'intégration des tests
Pour effectuer des tests de bout en bout (E2E) ou d'acceptation du système ou de l'interface utilisateur
$ faire le test-e2e # OU $ faire le système de test # OU $ faire un test-UI-Acceptance # OU $ faire le test fonctionnel