NAME
Minion::Backend::Pg91 - PostgreSQL 9.1 backend
SYNOPSIS
DESCRIPTION
Minion::Backend::Pg91 is a backend for Minion based on Minion::Backend::Pg . All necessary tables will be created automatically with a set of migrations named minion
. Note that this backend only supports PostgreSQL 9.1.
ATTRIBUTES
Minion::Backend::Pg91 inherits all attributes from Minion::Backend and implements the following new ones.
pg
my
$pg
=
$backend
->pg;
$backend
=
$backend
->pg(Mojo::Pg->new);
Mojo::Pg object used to store all data.
METHODS
Minion::Backend::Pg91 inherits all methods from Minion::Backend and implements the following new ones.
dequeue
my
$job_info
=
$backend
->dequeue(
$worker_id
, 0.5);
my
$job_info
=
$backend
->dequeue(
$worker_id
, 0.5, {
queues
=> [
'important'
]});
Wait a given amount of time in seconds for a job, dequeue it and transition from inactive
to active
state, or return undef
if queues were empty.
These options are currently available:
These fields are currently available:
- args
-
args
=> [
'foo'
,
'bar'
]
Job arguments.
- id
-
id
=>
'10023'
Job ID.
- retries
-
retries
=> 3
Number of times job has been retried.
- task
-
task
=>
'foo'
Task name.
enqueue
my
$job_id
=
$backend
->enqueue(
'foo'
);
my
$job_id
=
$backend
->enqueue(
foo
=> [
@args
]);
my
$job_id
=
$backend
->enqueue(
foo
=> [
@args
] => {
priority
=> 1});
Enqueue a new job with inactive
state.
These options are currently available:
- attempts
-
attempts
=> 25
Number of times performing this job will be attempted, defaults to
1
. - delay
-
delay
=> 10
Delay job for this many seconds (from now).
- priority
-
priority
=> 5
Job priority, defaults to
0
. - queue
-
queue
=>
'important'
Queue to put job in, defaults to
default
.
fail_job
my
$bool
=
$backend
->fail_job(
$job_id
,
$retries
);
my
$bool
=
$backend
->fail_job(
$job_id
,
$retries
,
'Something went wrong!'
);
my
$bool
=
$backend
->fail_job(
$job_id
,
$retries
, {
whatever
=>
'Something went wrong!'
});
Transition from active
to failed
state, and if there are attempts remaining, transition back to inactive
with a delay based on "backoff" in Minion.
finish_job
my
$bool
=
$backend
->finish_job(
$job_id
,
$retries
);
my
$bool
=
$backend
->finish_job(
$job_id
,
$retries
,
'All went well!'
);
my
$bool
=
$backend
->finish_job(
$job_id
,
$retries
, {
whatever
=>
'All went well!'
});
Transition from active
to finished
state.
job_info
my
$job_info
=
$backend
->job_info(
$job_id
);
Get information about a job, or return undef
if job does not exist.
# Check job state
my
$state
=
$backend
->job_info(
$job_id
)->{state};
# Get job result
my
$result
=
$backend
->job_info(
$job_id
)->{result};
These fields are currently available:
- args
-
args
=> [
'foo'
,
'bar'
]
Job arguments.
- attempts
-
attempts
=> 25
Number of times performing this job will be attempted, defaults to
1
. - created
-
created
=> 784111777
Time job was created.
- delayed
-
delayed
=> 784111777
Time job was delayed to.
- finished
-
finished
=> 784111777
Time job was finished.
- priority
-
priority
=> 3
Job priority.
- queue
-
queue
=>
'important'
Queue name.
- result
-
result
=>
'All went well!'
Job result.
- retried
-
retried
=> 784111777
Time job has been retried.
- retries
-
retries
=> 3
Number of times job has been retried.
- started
-
started
=> 784111777
Time job was started.
- state
-
state
=>
'inactive'
Current job state, usually
active
,failed
,finished
orinactive
. - task
-
task
=>
'foo'
Task name.
- worker
-
worker
=>
'154'
Id of worker that is processing the job.
list_jobs
my
$batch
=
$backend
->list_jobs(
$offset
,
$limit
);
my
$batch
=
$backend
->list_jobs(
$offset
,
$limit
, {
state
=>
'inactive'
});
Returns the same information as "job_info" but in batches.
These options are currently available:
- state
-
state
=>
'inactive'
List only jobs in this state.
- task
-
task
=>
'test'
List only jobs for this task.
list_workers
my
$batch
=
$backend
->list_workers(
$offset
,
$limit
);
Returns the same information as "worker_info" but in batches.
new
Construct a new Minion::Backend::Pg91 object.
register_worker
my
$worker_id
=
$backend
->register_worker;
my
$worker_id
=
$backend
->register_worker(
$worker_id
);
Register worker or send heartbeat to show that this worker is still alive.
remove_job
my
$bool
=
$backend
->remove_job(
$job_id
);
Remove failed
, finished
or inactive
job from queue.
repair
$backend
->repair;
Repair worker registry and job queue if necessary.
reset
$backend
->
reset
;
Reset job queue.
retry_job
my
$bool
=
$backend
->retry_job(
$job_id
,
$retries
);
my
$bool
=
$backend
->retry_job(
$job_id
,
$retries
, {
delay
=> 10});
Transition from failed
or finished
state back to inactive
, already inactive
jobs may also be retried to change options.
These options are currently available:
- delay
-
delay
=> 10
Delay job for this many seconds (from now).
- priority
-
priority
=> 5
Job priority.
- queue
-
queue
=>
'important'
Queue to put job in.
stats
my
$stats
=
$backend
->stats;
Get statistics for jobs and workers.
These fields are currently available:
- active_jobs
-
active_jobs
=> 100
Number of jobs in
active
state. - active_workers
-
active_workers
=> 100
Number of workers that are currently processing a job.
- failed_jobs
-
failed_jobs
=> 100
Number of jobs in
failed
state. - finished_jobs
-
finished_jobs
=> 100
Number of jobs in
finished
state. - inactive_jobs
-
inactive_jobs
=> 100
Number of jobs in
inactive
state. - inactive_workers
-
inactive_workers
=> 100
Number of workers that are currently not processing a job.
unregister_worker
$backend
->unregister_worker(
$worker_id
);
Unregister worker.
worker_info
my
$worker_info
=
$backend
->worker_info(
$worker_id
);
Get information about a worker, or return undef
if worker does not exist.
# Check worker host
my
$host
=
$backend
->worker_info(
$worker_id
)->{host};
These fields are currently available:
- host
-
host
=>
'localhost'
Worker host.
- jobs
-
jobs
=> [
'10023'
,
'10024'
,
'10025'
,
'10029'
]
Ids of jobs the worker is currently processing.
- notified
-
notified
=> 784111777
Last time worker sent a heartbeat.
- pid
-
pid
=> 12345
Process id of worker.
- started
-
started
=> 784111777
Time worker was started.