Elixir Wizards is an interview-format podcast, focused on engineers who use the Elixir programming language. Initially launched in early 2019, each season focuses on a specific topic or topics, with each interview focusing on the guest's experience and opinions on the topic. Elixir Wizards is hosted by Eric Oestrich and Sundi Myint of SmartLogic, a dev shop that’s been building custom software since 2005 and running Elixir applications in production since 2015. Learn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir?utm_source=podcast)

Python in Elixir Apps with Victor Björklund

July 31, 2025 35:02 5.9 MB ( 62.4 MB less) Downloads: 0

In this episode, Elixir Wizard Charles Suggs sits down with Victor Björklund to map out the landscape of Python integration in Elixir applications. From HTTP APIs and external services to embedded runtimes like ErlPort, PythonX, and the Venomous library, we evaluate each approach’s impact on performance, coupling, and developer experience. Victor draws on real-world examples like Scrapy-based web scraping and the Swedish BankID authentication to illustrate best practices for error handling, process pooling, and effective telemetry across the BEAM boundary.

We also tackle the practical side of deployment: packaging Python dependencies in Mix releases, mocking Python calls in tests, and deploying multi-language apps with confidence. Wrapping up, Victor shares his wishlist for even tighter interop (think multiple Python interpreter instances per VM) and offers low-risk entry points, like automating monthly reports, for teams ready to explore the power of Python’s ecosystem within Elixir.

Key topics discussed in this episode:

  • Integration methods: HTTP APIs, ports, ErlPort, PythonX, Venomous
  • Performance vs. coupling trade-offs across interop patterns
  • Managing the Global Interpreter Lock (GIL) with process pools
  • Leveraging mature Python libraries (Scrapy, BankID, etc.)
  • Error handling strategies across BEAM↔Python boundaries
  • Testing mixed-language systems: mocks and integration tests
  • Packaging and deploying Python alongside Elixir releases
  • Monitoring and telemetry for multi-language pipelines
  • Functional programming advantages in Elixir workflows
  • Tool selection guidance by project requirements
  • Future possibilities: multiple Python interpreters in one VM
  • Community resources for Python–Elixir interop help

Links mentioned:

jawdropping.io
https://cplusplus.com/
https://www.python.org/
https://react.dev/
https://nodejs.org/en
https://erlport.org/
https://hexdocs.pm/pythonx/Pythonx.html
https://pyrlang.github.io/Pyrlang/
Python GIL (Global Interpreter Lock): https://realpython.com/python-gil/
https://github.com/devinus/poolboy
https://hexdocs.pm/venomous/Venomous.html
Try-catch https://syntaxdb.com/ref/python/try-catch
https://www.scrapy.org/
https://www.bankid.com/en/
https://www.phoenixframework.org/
https://www.tzeyiing.com/posts/using-a-hunky-poolboy-to-manage-your-python-erlport-processes-in-elixir/
https://medium.com/stuart-engineering/how-we-use-python-within-elixir-486eb4d266f9
https://x.com/bjorklundvictor
https://victorbjorklund.com/
https://www.linkedin.com/in/victorbjorklund/
hello@victorbjorklund.com