godaemon alternatives and similar packages
Based on the "Utilities" category.
Alternatively, view godaemon alternatives based on common mentions on social networks and blogs.
-
项目文档
基于vite+vue3+gin搭建的开发基础平台(支持TS,JS混用),集成jwt鉴权,权限管理,动态路由,显隐可控组件,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,chatGPT自动查表等开发必备功能。 -
excelize
Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets -
xlsx
(No longer maintained!) Go (golang) library for reading and writing XLSX files. -
godotenv
A Go port of Ruby's dotenv library (Loads environment variables from .env files) -
hystrix-go
Netflix's Hystrix latency and fault tolerance library, for Go -
go-funk
A modern Go utility library which provides helpers (map, find, contains, filter, ...) -
Kopia
Cross-platform backup tool for Windows, macOS & Linux with fast, incremental backups, client-side end-to-end encryption, compression and data deduplication. CLI and GUI included. -
gorequest
GoRequest -- Simplified HTTP client ( inspired by nodejs SuperAgent ) -
goreporter
A Golang tool that does static analysis, unit testing, code review and generate code quality report. -
gojson
Automatically generate Go (golang) struct definitions from example JSON -
lancet
A comprehensive, efficient, and reusable util function library of go. -
spinner
Go (golang) package with 90 configurable terminal spinner/progress indicators. -
create-go-app
✨ Create a new production-ready project with backend, frontend and deploy automation by running one CLI command! -
filetype
Fast, dependency-free Go package to infer binary file types based on the magic numbers header signature -
EaseProbe
A simple, standalone, and lightweight tool that can do health/status checking, written in Go. -
mole
CLI application to create ssh tunnels focused on resiliency and user experience. -
boilr
:zap: boilerplate template manager that generates files or directories from template repositories -
beaver
💨 A real time messaging system to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps. -
go-underscore
Helpfully Functional Go - A useful collection of Go utilities. Designed for programmer happiness. -
mimetype
A fast Golang library for media type and file extension detection, based on magic numbers -
JobRunner
Framework for performing work asynchronously, outside of the request flow -
git-time-metric
Simple, seamless, lightweight time tracking for Git
ONLYOFFICE Docs — document collaboration in your environment
Do you think we are missing an alternative of godaemon or a related project?
README
godaemon
Daemonize Go applications with exec()
instead of fork()
. Read our blog post on the subject.
You can't daemonize the usual way in Go. Daemonizing is a Unix concept that requires
some specific things you can't do
easily in Go. But you can still accomplish the same goals
if you don't mind that your program will start copies of itself
several times, as opposed to using fork()
the way many programmers are accustomed to doing.
It is somewhat controversial whether it's even a good idea to make programs daemonize themselves, or how to do it correctly (and whether it's even possible to do correctly in Go). Read here, here, and here for more on this topic. However, at VividCortex we do need to run one of our processes as a daemon with the usual attributes of a daemon, and we chose the approach implemented in this package.
Because of the factors mentioned in the first link just given, you should take great care when
using this package's approach. It works for us, because we don't do anything like starting up
goroutines in our init()
functions, or other things that are perfectly legal in Go in general.
Getting Started
View the package documentation
for details about how it works. Briefly, to make your program into a daemon,
do the following as soon as possible in your main()
function:
import (
"github.com/VividCortex/godaemon"
)
func main() {
godaemon.MakeDaemon(&godaemon.DaemonAttr{})
}
Use the CaptureOutput
attribute if you need to capture your program's
standard output and standard error streams. In that case, the function returns
two valid readers (io.Reader
) that you can read from the program itself.
That's particularly useful for functions that write error or diagnosis messages
right to the error output, which are normally lost in a daemon.
Use the Files
attribute if you need to inherit open files into the daemon.
This is primarily intended for avoiding race conditions when holding locks on
those files (flocks). Releasing and re-acquiring locks between successive fork
calls opens up the chance for another program to steal the lock. However, by
declaring your file descriptors in the Files
attribute, MakeDaemon()
will
guarantee that locks are not released throughout the whole process. Your daemon
will inherit the file still holding the same locks, with no other process having
intervened in between. See the
package documentation for
more details and sample code. (Note that you shouldn't use this feature to
inherit TTY descriptors; otherwise what you get is technically not a daemon.)
Contribute
Contributions are welcome. Please open pull requests or issue reports!
License
This repository is Copyright (c) 2013 VividCortex, Inc. All rights reserved. It is licensed under the MIT license. Please see the LICENSE file for applicable license terms.
Authors
The primary author is Gustavo Kristic, with some documentation and other minor contributions by others at VividCortex.
History
An earlier version of this concept with a slightly different interface was developed internally at VividCortex.
Cats
A Go Daemon is a good thing, and so we present an angelic cat picture:
*Note that all licence references and agreements mentioned in the godaemon README section above
are relevant to that project's source code only.