Итак, во-первых, AsyncFunction
не поддерживает состояние Keyed, поэтому вам также придется обойти это и реализовать это самостоятельно с помощью CheckpointedFunction
.
Как правило, я не думаю, что есть что-нибудь нестандартное, что можно использовать в этом случае. Лучшая идея, которую я могу придумать, если вы хотите использовать broadcast
, - это использовать KeyedBroadcastProcessFunction
для выдачи результатов по потоку, а затем использовать функцию AsyncIO. Если вы реализуете собственную обработку состояния, вы можете сохранить все неудачные результаты и просто повторить их.
Однако, просто получить все запросы в виде списка и перебирать их в цикле, чтобы повторить попытку, вероятно, не лучшая идея, поскольку это, вероятно, может вызвать снижение производительности (вы устанавливаете, сколько запросов должно выполняться одновременно, но это запрос будет длиться намного дольше, чем другие).