mirror of
https://github.com/certimate-go/certimate.git
synced 2026-09-24 23:10:13 +08:00
refactor: env utils
This commit is contained in:
@@ -6,10 +6,8 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@@ -20,19 +18,15 @@ import (
|
||||
"github.com/certimate-go/certimate/internal/repository"
|
||||
"github.com/certimate-go/certimate/internal/workflow/engine"
|
||||
"github.com/certimate-go/certimate/pkg/logging"
|
||||
xenv "github.com/certimate-go/certimate/pkg/utils/env"
|
||||
)
|
||||
|
||||
var maxWorkers = 1
|
||||
var envMaxWorkers = 1
|
||||
|
||||
func init() {
|
||||
envMaxWorkers := os.Getenv("CERTIMATE_WORKFLOW_MAX_WORKERS")
|
||||
if n, _ := strconv.Atoi(envMaxWorkers); n > 0 {
|
||||
maxWorkers = n
|
||||
} else {
|
||||
maxWorkers = runtime.GOMAXPROCS(0)
|
||||
if maxWorkers == 0 {
|
||||
maxWorkers = max(1, runtime.NumCPU())
|
||||
}
|
||||
envMaxWorkers = xenv.GetOrDefaultInt("CERTIMATE_WORKFLOW_MAX_WORKERS", runtime.GOMAXPROCS(0))
|
||||
if envMaxWorkers <= 0 {
|
||||
envMaxWorkers = max(1, runtime.NumCPU())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -372,7 +366,7 @@ func (wd *workflowDispatcher) tryNextAsync() {
|
||||
|
||||
func newWorkflowDispatcher() WorkflowDispatcher {
|
||||
return &workflowDispatcher{
|
||||
concurrency: maxWorkers,
|
||||
concurrency: envMaxWorkers,
|
||||
|
||||
pendingRunQueue: make([]string, 0),
|
||||
processingTasks: make(map[string]*taskInfo),
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"log/slog"
|
||||
"maps"
|
||||
"math"
|
||||
"os"
|
||||
"slices"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -24,15 +23,13 @@ import (
|
||||
"github.com/certimate-go/certimate/internal/tools/mproc"
|
||||
xcert "github.com/certimate-go/certimate/pkg/utils/cert"
|
||||
xcryptokey "github.com/certimate-go/certimate/pkg/utils/crypto/key"
|
||||
xenv "github.com/certimate-go/certimate/pkg/utils/env"
|
||||
)
|
||||
|
||||
var useMultiProc = true
|
||||
var envMultiProc = true
|
||||
|
||||
func init() {
|
||||
envMultiProc := os.Getenv("CERTIMATE_WORKFLOW_MULTIPROC")
|
||||
if envMultiProc == "0" {
|
||||
useMultiProc = false
|
||||
}
|
||||
envMultiProc = xenv.GetOrDefaultBool("CERTIMATE_WORKFLOW_MULTIPROC", true)
|
||||
}
|
||||
|
||||
const (
|
||||
@@ -362,7 +359,7 @@ func (ne *bizApplyNodeExecutor) executeObtain(execCtx *NodeExecutionContext, nod
|
||||
}
|
||||
|
||||
// 如果启用多进程模式,发送指令
|
||||
if useMultiProc {
|
||||
if envMultiProc {
|
||||
type InData struct {
|
||||
Account *certacme.ACMEAccount `json:"account,omitempty"`
|
||||
Request *certacme.ObtainCertificateRequest `json:"request,omitempty"`
|
||||
|
||||
Vendored
+93
@@ -0,0 +1,93 @@
|
||||
package env
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// 以字符串形式读取指定环境变量的值。
|
||||
//
|
||||
// 入参:
|
||||
// - envVar:环境变量。
|
||||
//
|
||||
// 出参:
|
||||
// - 环境变量值。
|
||||
func GetString(envVar string) string {
|
||||
return GetOrDefaultString(envVar, "")
|
||||
}
|
||||
|
||||
// 以字符串形式读取指定环境变量的值。
|
||||
//
|
||||
// 入参:
|
||||
// - envVar:环境变量。
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 环境变量值。如果指定环境变量不存在、或者值为零值,则返回默认值。
|
||||
func GetOrDefaultString(envVar, defaultValue string) string {
|
||||
return getOrDefault(envVar, defaultValue, parseString)
|
||||
}
|
||||
|
||||
// 以整数形式读取指定环境变量的值。
|
||||
//
|
||||
// 入参:
|
||||
// - envVar:环境变量。
|
||||
//
|
||||
// 出参:
|
||||
// - 环境变量值。
|
||||
func GetInt(envVar string) int {
|
||||
return GetOrDefaultInt(envVar, 0)
|
||||
}
|
||||
|
||||
// 以整数形式读取指定环境变量的值。
|
||||
//
|
||||
// 入参:
|
||||
// - envVar:环境变量。
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 环境变量值。如果指定环境变量不存在、或者值的类型不是整数,则返回默认值。
|
||||
func GetOrDefaultInt(envVar string, defaultValue int) int {
|
||||
return getOrDefault(envVar, defaultValue, strconv.Atoi)
|
||||
}
|
||||
|
||||
// 以布尔形式读取指定环境变量的值。
|
||||
//
|
||||
// 入参:
|
||||
// - envVar:环境变量。
|
||||
//
|
||||
// 出参:
|
||||
// - 环境变量值。
|
||||
func GetBool(envVar string) bool {
|
||||
return GetOrDefaultBool(envVar, false)
|
||||
}
|
||||
|
||||
// 以布尔形式读取指定环境变量的值。
|
||||
//
|
||||
// 入参:
|
||||
// - envVar:环境变量。
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 环境变量值。如果指定环境变量不存在、或者值的类型不是布尔,则返回默认值。
|
||||
func GetOrDefaultBool(envVar string, defaultValue bool) bool {
|
||||
return getOrDefault(envVar, defaultValue, strconv.ParseBool)
|
||||
}
|
||||
|
||||
func getOrDefault[T any](envVar string, defaultValue T, parser func(string) (T, error)) T {
|
||||
v, err := parser(os.Getenv(envVar))
|
||||
if err != nil {
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
return v
|
||||
}
|
||||
|
||||
func parseString(s string) (string, error) {
|
||||
if s == "" {
|
||||
return "", errors.New("empty string")
|
||||
}
|
||||
|
||||
return s, nil
|
||||
}
|
||||
+10
-10
@@ -11,7 +11,7 @@ import (
|
||||
// - key: 键。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在或者值的类型不是字符串,则返回空字符串。
|
||||
// - 字典中键对应的值。如果指定键不存在、或者值的类型不是字符串,则返回空字符串。
|
||||
func GetString(dict map[string]any, key string) string {
|
||||
return GetOrDefaultString(dict, key, "")
|
||||
}
|
||||
@@ -24,7 +24,7 @@ func GetString(dict map[string]any, key string) string {
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是字符串或者值为零值,则返回默认值。
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是字符串、或者值为零值,则返回默认值。
|
||||
func GetOrDefaultString(dict map[string]any, key string, defaultValue string) string {
|
||||
if dict == nil {
|
||||
return defaultValue
|
||||
@@ -48,7 +48,7 @@ func GetOrDefaultString(dict map[string]any, key string, defaultValue string) st
|
||||
// - key: 键。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在或者值的类型不是整数,则返回 0。
|
||||
// - 字典中键对应的值。如果指定键不存在、或者值的类型不是整数,则返回 0。
|
||||
func GetInt(dict map[string]any, key string) int {
|
||||
return GetOrDefaultInt(dict, key, 0)
|
||||
}
|
||||
@@ -61,7 +61,7 @@ func GetInt(dict map[string]any, key string) int {
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是整数或者值为零值,则返回默认值。
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是整数、或者值为零值,则返回默认值。
|
||||
func GetOrDefaultInt(dict map[string]any, key string, defaultValue int) int {
|
||||
if dict == nil {
|
||||
return defaultValue
|
||||
@@ -117,7 +117,7 @@ func GetOrDefaultInt(dict map[string]any, key string, defaultValue int) int {
|
||||
// - key: 键。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在或者值的类型不是 32 位整数,则返回 0。
|
||||
// - 字典中键对应的值。如果指定键不存在、或者值的类型不是 32 位整数,则返回 0。
|
||||
func GetInt32(dict map[string]any, key string) int32 {
|
||||
return GetOrDefaultInt32(dict, key, 0)
|
||||
}
|
||||
@@ -130,7 +130,7 @@ func GetInt32(dict map[string]any, key string) int32 {
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是 32 位整数或者值为零值,则返回默认值。
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是 32 位整数、或者值为零值,则返回默认值。
|
||||
func GetOrDefaultInt32(dict map[string]any, key string, defaultValue int32) int32 {
|
||||
if dict == nil {
|
||||
return defaultValue
|
||||
@@ -186,7 +186,7 @@ func GetOrDefaultInt32(dict map[string]any, key string, defaultValue int32) int3
|
||||
// - key: 键。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在或者值的类型不是 64 位整数,则返回 0。
|
||||
// - 字典中键对应的值。如果指定键不存在、或者值的类型不是 64 位整数,则返回 0。
|
||||
func GetInt64(dict map[string]any, key string) int64 {
|
||||
return GetOrDefaultInt64(dict, key, 0)
|
||||
}
|
||||
@@ -199,7 +199,7 @@ func GetInt64(dict map[string]any, key string) int64 {
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是 64 位整数或者值为零值,则返回默认值。
|
||||
// - 字典中键对应的值。如果指定键不存在、值的类型不是 64 位整数、或者值为零值,则返回默认值。
|
||||
func GetOrDefaultInt64(dict map[string]any, key string, defaultValue int64) int64 {
|
||||
if dict == nil {
|
||||
return defaultValue
|
||||
@@ -255,7 +255,7 @@ func GetOrDefaultInt64(dict map[string]any, key string, defaultValue int64) int6
|
||||
// - key: 键。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回 false。
|
||||
// - 字典中键对应的值。如果指定键不存在、或者值的类型不是布尔,则返回 false。
|
||||
func GetBool(dict map[string]any, key string) bool {
|
||||
return GetOrDefaultBool(dict, key, false)
|
||||
}
|
||||
@@ -268,7 +268,7 @@ func GetBool(dict map[string]any, key string) bool {
|
||||
// - defaultValue: 默认值。
|
||||
//
|
||||
// 出参:
|
||||
// - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回默认值。
|
||||
// - 字典中键对应的值。如果指定键不存在、或者值的类型不是布尔,则返回默认值。
|
||||
func GetOrDefaultBool(dict map[string]any, key string, defaultValue bool) bool {
|
||||
if dict == nil {
|
||||
return defaultValue
|
||||
|
||||
Reference in New Issue
Block a user