- go1.23 v0.1.2: defer recover() в HTTP handler — panic no longer closes connection → HTTP 500 - python3.11 v0.1.5: try/except в do_GET/_handle_with_body/do_HEAD → 500 вместо EOF - python3.11 v0.1.5: ThreadingHTTPServer — concurrent requests (был single-thread) - python3.11 v0.1.6: _HighBacklogHTTPServer(request_queue_size=128) — listen(128) вместо listen(5) - context.go: go1.23 v0.1.1→v0.1.2, python3.11 v0.1.4→v0.1.6 - operator: v0.1.45 → v0.1.47 (два деплоя подряд с новыми runtime-версиями) - examples/POSTGRES: stress.tf (10 сервисов), full_test.sh (48 тестов, 4 фазы) - examples/POSTGRES: README.md, очистка от старых файлов (luceUNDnode.tf, funcs_list.py) Результат: full_test.sh 48/48 PASS - Фаза 3 PG-стресс: 40/40 parallel writer OK, 30/30 js-async OK, pgstorm 14k ops 0 err - Фаза 4 краш-шторм: 75/75 × HTTP 500 (паники не роняют платформу)
43 lines
837 B
Go
43 lines
837 B
Go
// 2026-03-19
|
|
// handler.go — быстрая Go функция: факториал + числа Фибоначчи.
|
|
// Проверяет Go runtime под лёгкой нагрузкой и корректность JSON-ответа.
|
|
// Entrypoint: handler.Handle
|
|
package handler
|
|
|
|
import "fmt"
|
|
|
|
func factorial(n int) uint64 {
|
|
if n <= 1 {
|
|
return 1
|
|
}
|
|
return uint64(n) * factorial(n-1)
|
|
}
|
|
|
|
func fib(n int) int {
|
|
if n <= 1 {
|
|
return n
|
|
}
|
|
a, b := 0, 1
|
|
for i := 2; i <= n; i++ {
|
|
a, b = b, a+b
|
|
}
|
|
return b
|
|
}
|
|
|
|
func Handle(event map[string]interface{}) interface{} {
|
|
n := 10
|
|
if v, ok := event["n"].(float64); ok {
|
|
n = int(v)
|
|
if n > 20 {
|
|
n = 20
|
|
}
|
|
}
|
|
return map[string]interface{}{
|
|
"runtime": "go1.23",
|
|
"version": "v1",
|
|
"n": n,
|
|
"factorial": fmt.Sprintf("%d", factorial(n)),
|
|
"fib": fib(n),
|
|
}
|
|
}
|