Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. gowp

gowp

MITGo

A Go worker pool library that limits concurrency of goroutine execution, supports timeouts, and never blocks task submission.

Visit WebsiteGitHubGitHub
516 stars66 forks0 contributors

What is gowp?

gowp is a Go library that implements a worker pool for managing and limiting the concurrency of goroutine execution. It solves the problem of uncontrolled goroutine spawning by providing a pool that limits simultaneous task execution while ensuring task submission is never blocked. The library includes features like timeout support, error propagation, and an optional rate limiter component.

Target Audience

Go developers building applications that require controlled concurrency, such as web servers, data processing pipelines, or any system needing to limit simultaneous goroutine execution to prevent resource exhaustion.

Value Proposition

Developers choose gowp for its non-blocking task submission, straightforward API, and focus on execution concurrency limits rather than queue size limits. Its additional limiter component for rate limiting with Redis support provides extra utility beyond basic worker pool functionality.

Overview

golang worker pool , Concurrency limiting goroutine pool

Use Cases

Best For

  • Controlling goroutine concurrency in web servers handling concurrent requests
  • Building data processing pipelines with limited parallel execution
  • Implementing job queues where task submission rate is unpredictable
  • Adding rate limiting to API clients or service calls
  • Preventing resource exhaustion in applications that spawn many goroutines
  • Managing background task execution with timeout requirements

Not Ideal For

  • Applications requiring distributed task execution across multiple processes or machines, as gowp's worker pool is designed for in-memory, single-process use.
  • Projects that need task prioritization or advanced scheduling features, since gowp uses a basic FIFO queue without priority support.
  • Teams looking for built-in monitoring and metrics for worker pool performance; gowp focuses on core functionality without integrated observability tools.

Pros & Cons

Pros

Non-Blocking Submission

Tasks can be submitted without blocking, regardless of queue size, ensuring smooth ingestion even under high load, as emphasized in the README with 'Never blocks submitting tasks'.

Concurrency Limiting

Limits the number of concurrently executing goroutines to prevent resource exhaustion, with configurable pool size via the New() function, addressing core concurrency control needs.

Timeout and Error Support

Provides timeout settings with SetTimeout() and centralized error handling through task return values and Wait() method, demonstrated in the examples for robust task management.

Integrated Rate Limiter

Includes a limiter component with cache and Redis backends for rate limiting, adding versatility beyond the worker pool, as shown in the limiter examples.

Cons

Limited Task Management

Lacks advanced features like task cancellation, priority queues, or dynamic worker scaling, which are common in more comprehensive worker pool libraries.

Potential Memory Overhead

Non-blocking submission can lead to unbounded queue growth if tasks are produced faster than consumed, risking high memory usage without explicit backpressure mechanisms.

External Dependency Complexity

Using the Redis backend for the limiter requires additional setup and dependency management, as seen in the Redis example, which adds deployment overhead.

Frequently Asked Questions

Quick Stats

Stars516
Forks66
Contributors0
Open Issues3
Last commit1 year ago
CreatedSince 2019

Tags

#task-queue#pool#goroutine#worker-pool#golang-library#golang#rate-limiting#concurrency#parallel-processing#go#workerpool

Built With

G
Go

Links & Resources

Website

Included in

Go169.1k
Auto-fetched 4 hours ago

Related Projects

antsants

🐜🐜🐜 ants is the most powerful and reliable pooling solution for Go.

Stars14,468
Forks1,437
Last commit20 days ago
concconc

Better structured concurrency for go

Stars10,417
Forks359
Last commit20 days ago
tunnytunny

A goroutine pool for Go

Stars4,033
Forks309
Last commit3 years ago
goworkergoworker

goworker is a Go-based background worker that runs 10 to 100,000* times faster than Ruby-based workers.

Stars2,847
Forks243
Last commit1 year ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub