Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Как запустить:
Потенциальные конфигурационные параметры вынесены в константы в
./cmd/tasks/main.go
. В идеале стоило бы их вынести в параметры CLI либо в переменные окружения.Если выводить все выполненные задания раз в 3 секунды, вывод может быть тяжело читать, поэтому можно выводить количество успешных и неуспешных обработанных тасков. Выводить количество можно поменяв константу
printFormat
наprinter.AmountFormat
.Так же в тестах обратил внимание, что
time.Now().Nanosecond()
всегда возвращает число с двумя нулями на конце на Windows, поэтому условие получения ошибки никогда не выполняется. Тут надо либо менять условие на "кроссплатформенное", либо запускать программу в контейнере, что я и сделал. Для удобства запуска написал простенькийdocker-compose.yml
. Запускать в таком случае так -docker compose up --build
.Пакеты generator, printer и worker начинал писать с тестов, поэтому они там есть. Максимизировать покрытие тестами целью себе не ставил, но можно было бы это сделать.
Ещё из улучшений можно было бы вынести логику с созданием воркеров и закрытием канала
processedTasks
в отдельную сущность.Также добавил небольшой CI с линтером, тестами и сборкой.
В случает отказа прошу дать обратную связь.
Спасибо!