Приложение Golang застревает, но каким-то образом отклеивается при попытке его завершения

#go

# #Вперед

Вопрос:

Я написал веб-приложение golang, используя стандартные библиотеки go. У меня есть API, который запускает подпрограмму.

В программе я перебираю конечный список данных, около 5000 единиц, и обрабатываю каждую запись. По мере обработки каждой записи я печатаю на терминале fmt.Println() , используя и спящий time.Sleep(500 * time.Millisecond) режим. Каждая обработка занимает примерно 500 мс.

Я запускаю свою программу go, используя Ubuntu в Windows (подсистема Windows для Linux), с помощью команды like go build amp;amp; ./app .

Когда я запускаю goroutine через вызов API, я вижу отпечатки в терминале. Через некоторое время я замечаю, что сообщения о печати останавливаются, и ничего не обрабатывается. Я проверяю БД, используя SELECT COUNT(*)... , поскольку я регистрирую одну запись в БД за обработку и вижу, что количество не меняется. Когда я захожу, чтобы завершить программу, нажав CTRL-Cв терминале, программа не завершается. Вместо этого каким-то образом обработка возобновляется, и я снова начинаю видеть отпечатки в терминале.

Кто-нибудь знает, почему это может происходить? Или как я могу начать отлаживать эту проблему? Заранее спасибо.

Комментарии:

1. не могли бы мы посмотреть часть вашего кода, пожалуйста, чтобы помочь с отладкой?

2. возможно, вы застряли в некоторых вычислениях, которые привязаны к контексту, который сам отменяется при нажатии ctrl-c. кто знает без исходного кода?