To zabíjení korutin přes timeout je zajímavé.
Ještě upozorním na překlep — “WHINE-END”, tohle se opravdu povedlo i s kontextem, když je v nějakém starém kódu hodně GOTO, tak se chce člověku “whine” :)
Tenhle jazyk moc neznám, je tam u korutin a komunikace mezi nimi taky něco jako “context” z Go pro méně agresivní řešení timeoutů?
Díky za super článek. Já jsem několikrát úspěšně pro podobné účely použil https://twistedmatrix.com/trac/. Je to sice starší knihovna, ale možná proto na ni lze často narazit při řešení souběhu vlastní úlohy (algoritmu) a komunikačního ovládání (např. přes REST). Výhodou je opravdu dobrá dokumentace a spousta příkladů na netu.
Mozna jste mohl ukazat producer-konzumer s korektnim ukoncenim. Je dobra praktika volat task_done na strane konzumera a join na strane producera. Pri ukonceni producer zavola join a pocka na zpracovani vsech tasku. Fronta si pamatuje pocet konzumovanych, jeste nezpracovanych prvku v _unfinished_tasks.