• Stars
    star
    37
  • Rank 715,477 (Top 15 %)
  • Language
    Perl
  • License
    Other
  • Created about 12 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

minimalistic Supervisor

NAME

Proclet - minimalistic Supervisor

SYNOPSIS

use Proclet;

my $proclet = Proclet->new(
    color => 1
);

# add service
$proclet->service(
    code => sub {
        my $job = $jobqueue->grab;
        work($job);
    },
    worker => 2,
    tag => 'worker'
);

$proclet->service(
    code => sub {
        my $loader = Plack::Loader->load(
            'Starlet',
            port => $port,
            host => $host || 0,
            max_workers => 4,
        );
        $loader->run($app);
    },
    tag => 'web'
);

$proclet->service(
    code => sub {
        exec('/usr/bin/memcached','-p','11211');
    },
);

$proclet->service(
    code => sub {
        scheduled_work();
    },
    tag => 'cron',
    every => '0 12 * * *', #everyday at 12:00am
);


$proclet->run;

DESCRIPTION

Proclet is minimalistic Supervisor, fork and manage many services from one perl script.

LOG

Logs from services are Displayed with timestamp and tag.

12:23:16 memcached.1 | <6 server listening (udp)
12:23:16 memcached.1 | <7 send buffer was 9216, now 3728270
12:23:16 memcached.1 | <7 server listening (udp)
12:23:16 web.1       | 2012/08/31-12:23:16 Starman::Server (type Net::Server::PreFork) starting! pid(51516)
12:23:16 web.1       | Resolved [*]:5432 to [0.0.0.0]:5432, IPv4
12:23:16 web.1       | Binding to TCP port 5432 on host 0.0.0.0 with IPv4 
12:23:16 web.1       | Setting gid to "20 20 20 401 204 100 98 81 80 79 61 12 402"

METHOD

  • new

    Create instance of Proclet.

    Attributes are as follows:

    • spawn_interval: Int

      interval in seconds between spawning services unless a service exits abnormally (default: 0)

    • err_respawn_interval: Int

      number of seconds to deter spawning of services after a service exits abnormally (default: 1)

    • color: Bool

      colored log (default: 0)

    • logger: CodeRef

        my $logger = File::RotateLogs->new(...)
        my $proclet = Proclet->new(
            logger => sub { $logger->print(@_) }
        );
      

      Sets a callback to print stdout/stderr. uses warn by default.

    • enable_log_worker: Bool

      enable worker for format logs. (default: 1) If disabled this option, cannot use logger opt too.

    • exec_notice: Bool

      enable start and exec notice message like

        16:38:12 worker.1 | Start callback: worker
      

      (default: 1)

  • service

    Add services to Proclet.

    Attributes are as follows:

    • code: CodeRef|ArrayRef|Str

      Code reference or commands of services.

      CodeRef

        $proclet->service(
          code => sub {
              MyWorker->run();
          }
        );
      

      ArrayRef

        $proclet->service(
          code => ['plackup','-a','app.psgi'],
        );
      

      Str

        $proclet->service(
          code => '/usr/bin/memcached'
        );
      
    • worker: Int

      Number of children to fork, default is "1"

    • tag: Str

      Keyword for log. optional

    • every: Str

      Crontab like format. optional

      If every option exists, Proclet execute the job as cron(8)

        $proclet->service(
            code => sub {
                scheduled_work();
            },
            tag => 'cron',
            every => '0 12 * * *', #everyday at 12:00am
        );
      
  • run

    run services. Proclet does start services by defined order

AUTHOR

Masahiro Nagano <kazeburo {at} gmail.com>

SEE ALSO

Proc::Launcher::Manager, related module Parallel::Prefork, Proclet used internally

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

More Repositories

1

rhebok

High Performance Preforked Rack Handler
C
240
star
2

GrowthForecast

Lightning Fast Graphing/Visualization
Perl
233
star
3

cloudforecast

the server metrics gathering
Perl
149
star
4

chocon

chocon is a simple proxy server for persisting connections between upstream servers.
Go
141
star
5

mysetup

my setup scripts repository
Shell
134
star
6

Gazelle

Preforked Plack Handler for performance freaks
Perl
73
star
7

Kurado

monitor metrics
Perl
71
star
8

Monoceros

PSGI/Plack server with event driven connection manager, preforking workers
Perl
55
star
9

HRForecast

Perl
49
star
10

wsgate-server

a websocket to tcp proxy/bridge server
Go
36
star
11

Kossy

sinatra-ish simple waf
Perl
34
star
12

Plack-Middleware-ServerStatus-Lite

Plack-Middleware-ServerStatus-Lite
Perl
25
star
13

prefork_engine

a simple prefork server framework / ruby port of perl's Parallel::Prefork
Ruby
24
star
14

GreenBuckets

Perl
23
star
15

query-digester

pt-query-digest wrapper to make ops simple
Perl
23
star
16

Log-Minimal

Minimal Logger
Perl
23
star
17

pico_http_parser

Fast HTTP Parser using picohttpparser
Ruby
19
star
18

isucon2_hack

isucon2 hack
Perl
19
star
19

Redis-Jet

Yet another XS implemented Redis client
XS
18
star
20

custom-mackerel-plugins

my custom mackerel plugins
Perl
17
star
21

motarei

Simple tcp proxy for Docker Hot deploy
Go
17
star
22

go-jmx-get

tiny jmx client
Go
16
star
23

DBIx-Sunny

Perl
16
star
24

docker-h2o

Dockerfile for h2o HTTP Server with graceful restart support
Shell
12
star
25

Plack-Builder-Conditionals

Plack::Builder extension
Perl
11
star
26

Plack-Middleware-Expires

mod_expires for plack
Perl
11
star
27

wsgate-client

a websocket to tcp proxy/bridge client server
Go
10
star
28

Plack-Server-AnyEvent-Prefork

Prefork AnyEvent based HTTP Server
Perl
10
star
29

mackerel-plugin-axslog

Yet Another mackerel-plugin for analyzing and visualizing Acesslog
Go
10
star
30

mackerel-plugin-pinging

ICMP Ping RTT custom mackerel plugin
Go
9
star
31

Apache-LogFormat-Compiler

Compile LogFormat to perl-code
Perl
9
star
32

Cache-Memcached-IronPlate

Best practices for Cache::Memcached
Perl
9
star
33

Twiggy-Prefork

Preforking AnyEvent HTTP server for PSGI
Perl
9
star
34

myps

Like pgrep and pkill, grep MySQL processlist and kill threads.
Go
8
star
35

percentile

Go
8
star
36

sabo

bandwidth limiting pipe with collaborative capability
Go
8
star
37

Scope-Container

Perl
8
star
38

build_mysql_mroonga_rpm

build mysql_mroonga.rpm by Vagrant provisioners
Shell
8
star
39

JavaScript-Value-Escape

Perl
7
star
40

isucon3qualifier-myhack

Perl
7
star
41

ppdp

Proxy Protocol Dump Proxy
Go
7
star
42

Scope-Container-DBI

DB connection manager with Scope::Container
Perl
6
star
43

heroku-buildpack-perl-procfile

a Heroku buildpack that runs any perl applications from Procfile
6
star
44

Cookie-Baker

Cookie string generator
Perl
6
star
45

p5-Alien-RRDtool

Installation of RRDs.pm (Perl binding for RRDtool)
Perl
6
star
46

rpm

my rpm repository
6
star
47

NoNoPaste

yet another nopaste
Perl
6
star
48

mackerel-plugin-maxcpu

Go
6
star
49

jstat2gf

Perl
5
star
50

chunkview

chuncked trasnfer visualizer
Perl
5
star
51

Time-TZOffset

Show timezone offset strings like +0900
C
5
star
52

NoNoPaste-Cloud

dotcloud nonopaste
Perl
5
star
53

mysql40dump

mysqldump wrapper for MySQL 4.0
Perl
5
star
54

Plack-Middleware-DBIx-DisconnectAll

Disconnect all database connection at end of request
Perl
5
star
55

isucon5-elimination-public

Perl
5
star
56

POSIX-strftime-Compiler

Perl
5
star
57

HTTP-Entity-Parser

PSGI compliant HTTP Entity Parser
Perl
5
star
58

Plack-Middleware-Scope-Container

Perl
5
star
59

Data-Page-Navigation

adds methods for page navigation link to Data::Page
Perl
4
star
60

docker-perl-build

docker image of perl-build
Shell
4
star
61

Plack-App-PHPCGI

execute PHP script as CGI
Perl
4
star
62

http-dump-request

http-dump-request server and docker container for monitoring and tests
Go
4
star
63

mackerel-plugin-postfix-log

Read and analyze postfix logs
Go
4
star
64

vagrant-destroy-provisioner

vagrant-destroy-provisioner plugin allows a VM to be destroyed as a provisioning step.
Ruby
4
star
65

check_http2

Nagios check_http plugin alternative powered by Go
Go
3
star
66

isucon11-final

final isucasy XI
Vue
3
star
67

diff-detector

a tiny tool
Go
3
star
68

isucon_summer_class_2014

ISUCON ๅคๆœŸ่ฌ›็ฟ’ 2014
Go
3
star
69

CoreListWeb

Module::CoreList Web
Perl
3
star
70

mssh

ssh tool
3
star
71

check-cert-net

Check a remote certification expiry using openssl s_client
Go
3
star
72

mackerel-plugin-log-counter

mackerel metric plugin for count lines in log
Go
3
star
73

Plack-Middleware-Log-Minimal

Perl
3
star
74

mod_copy_header

copy a response header to notes
C
3
star
75

wg-keygen-rep

wireguard keypair generator with salt string
Go
3
star
76

Module-Build-Pluggable-CPANfile

Include cpanfile
Perl
3
star
77

WWW-GoogleAnalytics-Mobile

PSGI Application of Google Analytics for Mobile and client
Perl
3
star
78

Cache-Isolator

Perl
3
star
79

check_memcached_val

nagios plugin for checking value in a memcached server
Perl
3
star
80

check-lastlog

Check users who have not logged in recently
Go
2
star
81

Redis-Tiny

deprecated
Perl
2
star
82

deteco

Simple auth server used JWT & public-key cryptography
Go
2
star
83

isucon5-final-public

Perl
2
star
84

isius

Ping/TCP/HTTP/HTTPS monitoring agent server
Go
2
star
85

mackerel-plugin-resolver-synthetic

mackerel plugin for monitoring dns server as linux resolver
Go
2
star
86

tanzak

ใŸใ‚“ใ–ใ
Perl
2
star
87

go-check-mysql-msr

check multi source replication
Go
2
star
88

connstorm

Go
2
star
89

App-derived

run command periodically and calculate rate and check from network
Perl
2
star
90

Cache-Memcached-Fast-Safe

Cache::Memcached::Fast with sanitizing keys and fork-safe
Perl
2
star
91

DBIx-DSN-Resolver

Resolv hostname within dsn string
Perl
2
star
92

limilic2

Perl
2
star
93

ltsvparser

LTSV (Labeled Tab-separated Values) parser for Go language
Go
2
star
94

private-isu-challenge

Go
2
star
95

Plack-Middleware-AxsLog

Alternative AccessLog Middleware
Perl
2
star
96

the-rp

the reverse HTTP an TCP Reverse proxy supports asynchronous upstream resolution and some balancing strategy
Go
2
star
97

File-RotateLogs

Rotate log file
Perl
2
star
98

relaxlogs

CLI for lestrrat-go/file-rotatelogs
Go
2
star
99

AnyEvent-DNS-Cache-Simple

provides simple cache for AnyEvent::DNS
Perl
2
star
100

Time-Crontab

Parser for crontab date and time field
Perl
2
star