Faust est une bibliothèque de streaming, va KAFKA courant de pensée à Python porté.
Robinhood Il est utilisé pour construire de haute performance et en temps réel canal de données de systèmes distribués, le traitement des données des milliards par jour.
Faust fournit également le traitement et le traitement événement flux, partageant le même type d'outils tels que: Kafka Streams, Apache Spark / Storm / Samza / Flink
Il ne nécessite pas l'utilisation d'une connexion DSL, ne devez utiliser Python! Cela signifie que lorsque vous faites le traitement des flux peut utiliser toutes vos bibliothèques Python préférées: numpy, PyTorch, Pandas, NLTK, Django, Flask, sqlalchemy et ainsi de suite.
En raison de la nécessité d'utiliser la nouvelle syntaxe await async et la méthode d'annotation de type variable /, Faust besoin d'utiliser plus que la version Python3.6.
Voici un exemple de traitement d'un flux d'entrée de commandes:
Le décorateur d'agent définit un « processeur de flux » est un sujet Kafka sur sa nature, et chaque événement peut être reçu pour faire un peu de traitement.
Cet agent est une fonction de la async def, de sorte qu'il peut effectuer d'autres opérations de façon asynchrone, comme demande Web.
Ce système peut être un état persistant, exécuter une manière similaire à la base de données. Les tableaux sont nommés comme magasin de clés distribués / valeur, vous pouvez utiliser le dictionnaire Python régulier pour le faire.
Localement sur chaque machine en utilisant C ++ pour écrire la table de stockage base de données (dénommé RocksDB) ultra-rapide intégré.
Le tableau peut également stocker en option polymérisation « fenêtre » compté pour suivre « la veille clics » ou « une heure avant le nombre de clics. » Comme le flux Kafka, nous soutenons le défilement, le saut et fenêtre temporelle glissante, l'ancienne fenêtre peuvent être remplis avec des données en vue de prévenir expiré.
Pour améliorer la fiabilité, nous utilisons le sujet Kafka comme un « WAL ». Lorsqu'une clé est modifiée, nous publierons des mises à jour dans le journal. noeud veille à l'aide du journal de mise à jour pour enregistrer une copie plus précise des données et soutenir la reprise immédiate en cas un nud échoue.
Pour les utilisateurs, la table est simplement un dictionnaire, mais les données existe entre le redémarrage et la réplication entre les nuds, de sorte que l'autre noeud peut prendre automatiquement en cas de défaillance.
Vous pouvez parcourir plusieurs statistiques URL de la page:
Kafka sujet des données est envoyée au district, ce qui signifie que coups seront fragmentés de cette manière l'URL. En conséquence, chaque compte d'une URL sera immédiatement transmis au travailleur Faust la même instance.
soutenir Faust tout type de données en continu: octet, séquence Unicode et la structure, prend également en charge l'utilisation de « modèle » de Python moderne pour décrire les clés de valeur de débit et de la façon dont ils sont sérialisés.
Faust est statiquement typé, avantage statiquement typé de l'aide du vérificateur de type mypy, afin que vous puissiez profiter du moment où l'écriture d'applications.
Faust code source est très faible, bien organisé, est un bon apprentissage de la mise en uvre de Kafka flux ressource.
En savoir plus sur Faust dans la page d'introduction
Pour en savoir plus sur Faust, les demandes du système, des instructions d'installation, des ressources, des forums, etc., ou accéder directement au tutoriel de démarrage rapide. Dans une application écrite en continu pour voir l'application sur Faust, puis discussion approfondie par le manuel d'utilisation. Informations détaillées sont décrites dans ce manuel sont basées sur différents thèmes
Faust est ...
brève introduction
Faust est très facile à utiliser. En apprenant une autre méthode de traitement de flux, vous devez toujours un complexe de projet bonjour-monde et les exigences de base correspondant à commencer l'apprentissage. Faust juste besoin de Kafka, le reste est juste Python, si vous connaissez Python, vous pouvez utiliser directement Faust pour faire le travail du traitement des flux, et il peut intégrer tout ce qui lui est associée.
Voici une application simple que vous pouvez faire: le code source pour Python
Vous pouvez être async et des mots-clés à la fois peur Attendre les, mais vous n'avez pas besoin de savoir comment utiliser Faust asyncio uvres: tant que l'imitation de ces exemples que vous pouvez obtenir les résultats que vous voulez.
L'exemple d'application démarre deux tâches: l'un est le flux de processus, l'autre est un fil d'arrière-plan pour envoyer un flux d'événements. En application pratique, votre système publiera événement sujet Kafka, votre processeur peut obtenir des informations sur l'événement de ce sujet Kafka, et ne nécessite qu'un fil d'arrière-plan pour entrer des données dans notre exemple.
Disponibilité haute
Faust est un très disponible, et peut survivre à des problèmes de réseau et les pannes de serveur. Dans le cas d'une défaillance d'un noeud, il peut restaurer automatiquement, et les noeuds de sauvegarde prendra la table.
distribué
D'autres exemples nécessaires pour démarrer votre application.
rapide
Faust exemple de travailleur a un seul noyau peut gérer des dizaines de milliers d'événements par seconde, nous avons des raisons de croire qu'une fois que nous sommes en mesure de soutenir un client Kafka plus optimisé le débit augmentera.
flexibilité
Faust est Python, mais un flux infini de iterator asynchrone. Si vous savez comment utiliser Python, alors vous savez déjà comment utiliser Faust, il peut être utilisé avec vos bibliothèques Python préférées, telles que Django, Flask, SQLAlchemy, NTLK, NumPy, Scikit, tensorflow et ainsi de suite.
installer
Vous pouvez installer ou Faust à partir du fichier source par paquet Python
Utilisez la touche PIP installer:
reliure
Faust setuptools définit également un ensemble d'extensions peut être utilisé pour installer Faust, et qui dépend d'une caractéristique donnée.
Vous pouvez les spécifier ou pépin utiliser des crochets dans la ligne de commande sur vos besoins. Une pluralité de paquets séparés par des virgules:
Les liaisons suivantes sont valables:
boutique
optimisation
capteur
boucle de l'événement
débogage
Télécharger et installer à partir du fichier source
la version Faust de l'URL de téléchargement est: http: //pypi.python.org/pypi/faust
Vous pouvez l'installer comme ceci:
Si vous n'êtes pas en cours d'utilisation virtualenv, vous devez exécuter la dernière commande en tant qu'utilisateur privilégié.
Utilisez la version de développement
Vous pouvez utiliser la commande suivante pour installer la version pip de Faust:
Foire aux questions
Faust peut être utilisé sur Django / Fiole / etc il?
Utilisez gevent
Cette méthode est applicable à toute obstruction des bibliothèques Python peuvent travailler avec gevent.
Utilisez gevent exige que vous installez le module aiogevent, vous pouvez l'installer comme package Faust:
Puis utiliser effectivement eventlet comme une boucle d'événement, vous utilisez le programme -L faust < faust --loop >
avertissement
Il est très important, il est situé dans la partie supérieure du module, et réalisé avant une bibliothèque d'importation.
Faust Tornado peut être utilisé là-dessus?
Vous pouvez! Utilisez tornado.platform.asyncio lien: http: //www.tornadoweb.org/en/stable/asyncio.html
Faust peut être utilisé sur tordu?
Vous pouvez! Utilisation asyncio réacteur atteint: https: //twistedmatrix.com/documents/17.1.0/api/twisted.internet.asyncioreactor.html
Que ce soit pour soutenir Python3.5 ou plus tôt?
Il n'y a pas de plan pour soutenir Python 3.5, mais vous êtes invités à contribuer à ce projet.
Voici quelques-unes des étapes nécessaires pour atteindre cet objectif
Conversion de code source pour remplacer commentaire variable au commentaire
Vous soutiendrez python2 il?
Il n'y a pas de plan pour soutenir Python 2, mais vous êtes invités à contribuer au projet (les questions ci-dessus en détail également 2 liés Python).
Un grand nombre de fichiers ouverts lorsque les applications exécutées localement Faust, je me suis plus RocksDB erreur. Comment puis-je résoudre ce problème
Vous devrez peut-être ajouter un grand nombre de limite de fichiers ouverts. L'article suivant explique comment faire sur OS X: https: //blog.dekstroza.io/ulimit-shenanigans-on-osx-el-capitan
ressources
Suivi des problèmes
Si vous avez des commentaires, des questions ou des problèmes, s'il vous plaît noter que notre rapport de suivi des bogues: https: //github.com/robinhood/faust/issues/
wiki
https://wiki.github.com/robinhood/faust/
permis
Le logiciel est distribué sous licence la nouvelle licence BSD. Pour le texte complet de la licence, s'il vous plaît se référer à la partie supérieure du répertoire de fichier de licence de distribution.
contribution
le développement Faust se produit dans GitHub: https://github.com/robinhood/faust
Nous vous encourageons vivement à participer au développement de Faust.
Assurez-vous de lire une partie également du document la contribution de Faust.
normes concernant la codification
Tout le monde interagit dans la base de code du projet, numéro tracker, bavardoirs et listes de diffusion doivent suivre le « Code de conduite Faust. »
Comme contributeurs et les auteurs de ces projets, afin de cultiver une communauté ouverte et populaire, nous nous engageons à respecter toutes les personnes en signalant le problème, publier des demandes de fonctionnalités, mises à jour de documentation, correctifs et soumettre des demandes de fusion ou d'autres activités.
Nous nous engageons à faire toutes les personnes impliquées dans ces projets ont pas de harcèlement d'expérience, quel que soit leur niveau d'expérience, le sexe, l'identité de genre et d'expression, l'orientation sexuelle, le handicap, l'apparence personnelle, type de corps, la race, l'origine ethnique, l'âge, la religion ou la nationalité.
comportement Les participants mauvais comprennent:
La facilité d'utilisation du langage ou des images
attaques personnelles individuelles
Vandalisme ou insultant / propos offensants
harcèlement public ou privé
Sans l'autorisation expresse de publier d'autres renseignements personnels des personnes, comme l'adresse ou l'adresse électronique
D'autres comportements contraires à l'éthique ou non professionnelle.
le personnel d'entretien du projet ont le droit et la responsabilité de supprimer, modifier, ou a refusé de commenter, soumettre le code, l'édition de wiki et d'autres problèmes avec le code de conduite contribution incohérente. En adoptant ce code de conduite, l'engagement du responsable du projet à ces principes dans tous les aspects de la gestion de ce projet sont l'application juste et cohérente. Le non-respect du code de conduite ou les défenseurs de la mise en uvre du projet peut être définitivement supprimé de l'équipe du projet.