Date: Sun, 26 Aug 2018 22:00:00 -0400
<h3>Summary</h3> <p>The need to process unbounded and continually streaming sources of data has become increasingly common. One of the popular platforms for implementing this is Kafka along with its streams API. Unfortunately, this requires all of your processing or microservice logic to be implemented in Java, so what’s a poor Python developer to do? If that developer is Ask Solem of Celery fame then the answer is, help to re-implement the streams API in Python. In this episode Ask describes how Faust got started, how it works under the covers, and how you can start using it today to process your fast moving data in easy to understand Python code. He also discusses ways in which Faust might be able to replace your Celery workers, and all of the pieces that you can replace with your own plugins.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 40Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">podcastinit.com/linode</a> to get a $20 credit and launch a new server in under a minute.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/podcastinit?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@Podcast__init__</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&uo=6&at=&ct=&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, or <a href="https://play.google.com/music/m/I7ogju4xv6adasgqz6545jndgsy?t=Podcastinit_-_Python_and_the_people_who_make_it_great&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Google Play Music</a>, tell your friends and co-workers, and share it on social media.</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&utm_medium=rss">podcastinit.com/chat</a></li> <li>Your host as usual is Tobias Macey and today I’m interviewing Ask Solem about Faust, a library for building high performance, high throughput streaming systems in Python</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>What is Faust and what was your motivation for building it? <ul> <li>What were the initial project requirements that led you to use Kafka as the primary infrastructure component for Faust?</li> </ul> </li> <li>Can you describe the architecture for Faust and how it has changed from when you first started writing it? <ul> <li>What mechanism does Faust use for managing consensus and failover among instances that are working on the same stream partition?</li> </ul> </li> <li>What are some of the lessons that you learned while building Celery that were most useful to you when designing Faust?</li> <li>What have you found to be the most common areas of confusion for people who are just starting to build an application on top of Faust?</li> <li>What has been the most interesting/unexpected/difficult aspects of building and maintaining Faust?</li> <li>What have you found to be the most challenging aspects of building streaming applications?</li> <li>What was the reason for releasing Faust as an open source project rather than keeping it internal to Robinhood?</li> <li>What would be involved in adding support for alternate queue or stream implementations?</li> <li>What do you have planned for the future of Faust?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://twitter.com/asksol?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@asksol</a> on Twitter</li> <li><a href="https://github.com/ask?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">ask</a> on GitHub</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://amzn.to/2BQZOiQ?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Super Troopers 2</a></li> </ul> </li> <li>Ask <ul> <li><a href="https://amzn.to/2PGjk4e?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Microsound</a> by Curtis Roads</li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://faust.readthedocs.io/en/latest/index.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Faust</a></li> <li><a href="https://www.robinhood.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">RobinHood</a></li> <li><a href="https://kafka.apache.org/documentation/streams/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Kafka Streams</a></li> <li><a href="http://www.rabbitmq.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">RabbitMQ</a></li> <li><a href="https://docs.python.org/3/library/asyncio.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">AsyncIO</a></li> <li><a href="http://www.celeryproject.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Celery</a></li> <li><a href="http://kafka.apache.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Kafka</a></li> <li><a href="https://www.confluent.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Confluent</a></li> <li><a href="https://en.wikipedia.org/wiki/Write-ahead_logging?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Write-Ahead Log</a></li> <li><a href="https://rocksdb.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">RocksDB</a></li> <li><a href="https://redis.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Redis</a></li> <li><a href="http://pulsar.incubator.apache.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Pulsar</a></li> <li><a href="https://www.confluent.io/product/ksql/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">KSQL</a></li> <li><a href="http://ilpubs.stanford.edu:8090/483/1/2000-7.pdf?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Exactly Once Semantics</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Ffast-stream-processing-in-python-using-faust-with-ask-solem-episode-176%2F&action_name=Fast+Stream+Processing+In+Python+Using+Faust+with+Ask+Solem+-+Episode+176&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>