Есть ли в Python распределенная очередь задач, которая позволяет мне убивать зависшие задачи, которые не желают сотрудничать

В основном у меня много задач (партиями примерно по 1000), и время выполнения этих задач может сильно варьироваться (от менее секунды до 10 минут). Я знаю, что если задача выполняется больше минуты, я могу ее убить. Эти задачи являются этапами оптимизации некоторой модели интеллектуального анализа данных (но независимы друг от друга) и большую часть времени проводят внутри некоторой функции расширения C, поэтому они не будут сотрудничать, если я попытаюсь изящно их убить.

Есть ли распределенная очередь задач, которая вписывается в эту схему --- AFAIK: сельдерей позволяет прерывать задачи, которые готовы к сотрудничеству. Но я могу ошибаться.

Недавно я задал аналогичный вопрос об уничтожении зависающих функций в чистом питоне Устранение зависающих функций в Python в многопоточной среде .

Думаю, я мог бы подклассифицировать задачу сельдерея, чтобы она порождала новый процесс, а затем выполняла свою полезную нагрузку, прерывая его выполнение, если это занимает слишком много времени, но тогда я бы погиб из-за накладных расходов на инициализацию нового интерпретатора.

6
задан Community 23 May 2017 в 10:24
поделиться