Anatomy of Graceful Shutdown: Part 1

Part 1: Signals and Linux Part 1: Signals and Linux [you’re here] Part 2: Containers and signals Part 3: Python and signals [WIP] Part 4: Django and Gunicorn [WIP] Part 5: Celery [WIP] Part 6: Other frameworks and libraries [WIP] Intro There’s been quite a lot of issues surrounding application shutdowns in my line of work. Connections not being correctly closed, incoming requests being processed when they shouldn’t have been, various quirks around how new deployments affect customers during busy hours....

March 3, 2024 · 25 min · 5229 words · Andrei Sviridov

Python Multiprocessing Quirks on MacOS.

Prelude Currently, I’m working on the product, built around a large Django monolithic application and a bunch of microservices around it. The codebase is quite huge and has a lot of (tens of thousands) tests, that are normally run in a parallel mode in the CI environment. The CPython and Django versions are a little bit stale (3.8 and 3.2 respectively). For local development purposes, it’s well enough to run a subset of tests in a non-parallel mode or to wait for the whole suite to pass during the CI run, but for one specific use case I had to run a parallel test suite locally....

January 14, 2024 · 8 min · 1639 words · Andrei Sviridov