Just came across an article which explains the architecture pattern of an API gateway pretty well.
Zato Blog: What is an API gateway?
Converted an old #python app of mine to Python3 via 2to3, which I had postponed for years. Finally, with moving to a new machine last year, the thing broke, so this was on my list for quite a while now.
It turned out to be much easier than I had expected. I needed to get rid of a dependency to pysqlite as it's now part of the standard distribution and had to look a little bit into how to create wheels instead of eggs, but that was it. I didn't had to touch a single line of real code.
Leo Zovic: Error Handling In Context Managers http://langnostic.inaimathi.ca/posts/error-handling-in-context-managers
That's a nice discussion of #commonlisp unwind-protect in the context of with-resource macros, also showing how to achieve something similar in #python. The Python try/catch approach would also work in Clojure. But note that it is substantially less powerful than CL's handler/restart system.
The little book of Python anti-patterns:
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!