Как избавиться от конфликта потоков при устаревании ключа авторизации?
Пусть есть программа, которая парсит некоторе API в Х потоков, а лучше даже Х программ, они между собой не взаимодействую. Грубо говоря запущено несколько экземпляров одного и того же парсера, просто каждый парсит свою сущность. В какой-то момент JWT ключ авторизации устаревает и каждый поток получает ошибку. Бросать все их авторизовываться кажется нерациональным, т.к. они законфилтуют, поскольку каждый получит свой ключ. Соответстенно будут устаревать и так и не смогут придти к одному единому ключу. Подскажите, пожалуйста, как принято решать такую проблему?
Вы же почти ответили на свой вопрос. Первый проверяет, начат ли кем-то другим процесс регенерации токенов и если нет, то запускает его и помечает(где-то), что регенерация в процессе. Остальные видят, что процесс запущен и правильно реагируют на эту ситуацию: ждут, отключаются, еще что-то...
Composer для контроля валидного ключа и его перезапроса: т.е. он управляет всеми параллельными/асинхронными потоками, использующие ключ авторизации.
Если композер разрешил - то поток(и) исполнеяется, иначе - ждёт команды.