#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. кто знает без исходного кода?