lucky-cluster
Version, currently 0.3.13 versions
- 0.3.1latestApr 19, 2021
- 0.3.0not indexedJan 22, 2023
- 0.2.0not indexedJan 22, 2023
github.com/jwoertink/lucky-cluster
Boot multiple lucky processes
15 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
lucky-cluster:
github: jwoertink/lucky-cluster
version: ~> 0.3.1Then run:
shards installshard.yml
- Crystal
>= 0.35.1, < 2.0.0- License
- MIT
- Author
- Jeremy Woertink <jeremywoertink@gmail.com>
Dependencies
Runtime Dependencies
- future~> 1.0.0github: crystal-community/future.cr
Development Dependencies
- ameba~> 0.14.2github: crystal-ameba/amebadev
README
# lucky-cluster
When a lucky app boots, it's only 1 single process. If you're running on a beast server, then you're missing out on some free performance!
This shards lets you boot multiple processes of your lucky app.
## Installation
*NOTE* This version requires Lucky `0.15.0` or later.
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
lucky-cluster:
github: jwoertink/lucky-cluster
```
2. Run `shards install`
## Usage
1. Open `src/start_server.cr`
2. Add your require below the app require
```crystal
require "./app"
require "lucky-cluster"
```
3. Replace `AppServer.new` with `Lucky::Cluster.new`
```crystal
app_server = Lucky::Cluster.new
```
4. Remove the `Signal::INT.trap` block. `lucky-cluster` handles that for you.
5. You can remove the extra `puts` in there too, if you want.
6. Optionally, specify the number of processes to boot with `app_server.threads = 2`
Once done, your `src/start_server.cr` file should look like this:
```crystal
require "./app"
require "lucky-cluster"
if Lucky::Env.development?
Avram::Migrator::Runner.new.ensure_migrated!
end
Habitat.raise_if_missing_settings!
app_server = Lucky::Cluster.new
# This boots a new process for each thread.
app_server.threads = ENV.fetch("MAX_THREADS") { "10" }.to_i
# You can also use this:
# app_server.threads = System.cpu_count
app_server.listen
```
## Gotchas
Linux will handle load balancing the processes for you, macOS will not. So if you try to load test this on a mac, you're going to have a bad time!
## Development
I don't know yet. Just make sure you don't break this thing, and if you know how I can write specs for this, please help!
## Contributing
1. Fork it (<https://github.com/jwoertink/lucky-cluster/fork>)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Jeremy Woertink](https://github.com/jwoertink) - creator and maintainer
## Mentions
Thanks to the work done on [Spider-Gazelle](https://github.com/spider-gazelle/action-controller/blob/master/clustering.md) for showing how they did it.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.3.1- Tagged
- Apr 19, 2021
- Commit
b51152948525- Crystal
>= 0.35.1, < 2.0.0- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/jwoertink/lucky-cluster
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 13, 2026
- Synced
- Aug 13, 2026
- Versions
- 3