Explore common pitfalls and best practices in asynchronous Python programming using asyncio in this EuroPython 2018 conference talk. Delve into real-world examples that illustrate potential issues like callback hell, thread safety violations, and deadlocks. Learn how to properly implement concurrency, call coroutines from synchronous code, manage threads, and gracefully shut down async programs. Discover hidden "gotchas" and gain insights into exception handling, event-driven services, and working with coroutines. Examine topics such as signal handlers, exception wrappers, and the asyncio gather function. Benefit from the speaker's firsthand experiences to avoid common mistakes and improve your asyncio implementations.