Už 14 let mě baví a živí geoinformatika. Začal jsem jako zaměstnanec Masarykovy univerzity postupně na pozicích geoinformatik, vývojář, systémový analytik a nakonec vedoucí skupiny GIS na Ústavy výpočetní techniky. Dva roky jsem pro firmu MapTiler rozvíjel celosvětový projekt OpenMapTiles. Od roku 2016 pracuji naplno na volné noze.
When I first heard about Celery three years ago, my first idea was "Why would anyone call a tool for managing async tasks 'Salary'?" Nowadays I am realizing that similar misunderstandings were actually quite often during my work with this tool.
I want to talk about my experiences with Celery, from total beginner to a-few-times-trapped user. Together with my colleagues, we started with simple tasks that were periodically gathering data and computing aggregate values of timeseries within a research project. This was actually copybook example of Celery usage, with little bit of Celery beat and tasks chaining. Saturated with success, I decided to use Celery for Layman, a web service that publishes even large geospatial datasets through REST API. Redis as a broker, Flask as web application framework. There came need to effectively and safely abort running task. Or actually chain of tasks. And sometimes from different process than the one that started the chain. That's where thing got unexpectedly complicated and story of AbortableAsyncResult, persisting results and tracking task states starts.