У меня есть кластер dask с n рабочими, и я хочу, чтобы рабочие выполняли запросы к базе данных. Но база данных способна обрабатывать только m запросов параллельно, где m ‹n. Как я могу смоделировать это в dask.distributed? Параллельно над такой задачей должны работать только m работников.
Я видел, что распределенный поддерживает блокировки (http://distributed.readthedocs.io/en/latest/api.html#distributed.Lock). Но с этим я мог выполнять только один запрос параллельно, а не m.
Также я видел, что могу определять ресурсы для каждого рабочего (https://distributed.readthedocs.io/en/latest/resources.html). Но это также не подходит, поскольку база данных не зависит от рабочих. Мне бы либо пришлось определять по одному ресурсу базы данных для каждого рабочего (что приводит к слишком большому количеству параллельных запросов). Или мне пришлось бы распределить m ресурсов базы данных среди n работников, что сложно при настройке кластера и неоптимально в исполнении.
Можно ли определить что-то вроде семафоров в dask, чтобы решить эту проблему?