Python en streaming

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.

LOL nouvelle activité a été de 100% de la première exposition limitée peau du Roi Singe Avatar
Précédent
Les images en direct de la « zone de vie » sont là! « Lop Nur grand par la » exposition de photos ouvre aujourd'hui
Prochain
Comment réinitialiser dans Git, la récupération, le retour à l'état précédent
Les prix, le développement de la voiture, les ventes de la marque chinoise en Russie a augmenté de nouveau en Juillet
Q7 moins de 400000, légèrement plus grand que le X5, le plus beau 7280000, Highlander panique aussi
Expédition a marqué le début deux grandes ligne principale positif prêt à voler
Async et Attendent expliqué avec des dessins et des exemples
LOL dernière course sur les singles costume fraîche recommande Paode sauvages tels atours pour être sûr!
150000 yuans recommandation personnalisée SUV ne sont pas les mêmes que les modèles de la jeunesse
L'élection de Merkel se rapproche cassé sa bien-aimée voiture allemande
gamme complète de Toyota prendre la technologie de sécurité active, Yan Zhi valeur Bin beau grand cercle frit, 130000 zayang domestiques
Replay limite quotidienne - l'armée tant attendue
La concurrence sur le marché pour mettre à niveau, Honda a présenté deux 650cc « Titans » pour faire face au changement
couronne de ventes mensuelles ne répond pas et faire les choses, par 1,3T, 7 Wanduo laisser GS4 comment faire