Я пишу слабый бот с Go и Aws Lambda. Slack требует, чтобы бот ответил в течение 3 секунд. Однако иногда я не могу заставить его отвечать так быстро, потому что он «общается» с другими безсерверными приложениями для запроса некоторых данных или диспетчеризации задач. Я никогда раньше не работал с программами, но я надеялся, что смогу реализовать что-то вроде этого:
- Лямбда получает запрос
- Бот создает программу, которая обработает этот запрос и будет действовать в соответствии с ним
- Обработчик не ждет завершения всех этих действий, а сразу отвечает 200.
- Лямбда продолжает работать до тех пор, пока не закончится горутин.
Я не уверен, возможно ли это.
Я читал о sync.WaitGroup
, но я не уверен, как включить его в основную функцию. Должен ли я использовать его внутри обработчика? Но мне нужно return
ответить, и это не та функция, которую я могу превратить в программу.
В идеале, я бы хотел, чтобы обработчик сразу ответил, а затем обработал goroutine в фоновом режиме.