postburner 0.7.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +18 -0
- data/app/models/postburner/job.rb +1 -1
- data/lib/postburner/tube.rb +53 -0
- data/lib/postburner/version.rb +1 -1
- data/lib/postburner.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3f5758fde9443c7c094a85825c343aa003fd43a969323d549fe631d3c114fd8
|
4
|
+
data.tar.gz: aa30ba2e1ef5669bc9dd86243553dcc3f89c5dfa0a084c154afd313919df82db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f87f62fdca9594f365fb1641a3c0d83adc78271a0ac22e4b711e684cf02ba7fa5e9ad51c0ec2eac999ee62ac95d998bd7dccf3ef33e64856b77b40fa39329a5
|
7
|
+
data.tar.gz: 9e518552995537a13204210f5fdffb76a7d709a64c0064dec45a0b02150c871774e4ed0f7c82da90ac2fd3d76c313577f70420a95461d426b21fb20abaf428e5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.8.0 - 2022-11-13
|
4
|
+
|
5
|
+
### Added
|
6
|
+
- add Postburner::Tube for Beaneater job introspection.
|
7
|
+
- add note about tube names and hyphens/dashes to README.
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
- fix Backburner::Queue methods in subclasses for queue selection, etc.
|
11
|
+
|
3
12
|
## v0.7.1 - 2022-10-30
|
4
13
|
|
5
14
|
### Required Changes
|
data/README.md
CHANGED
@@ -203,6 +203,24 @@ to add your own authentication or changes - or just create your own routes, cont
|
|
203
203
|
[Override the views](https://guides.rubyonrails.org/engines.html#overriding-views) to make them
|
204
204
|
prettier - or follow the suggestion above and use your own.
|
205
205
|
|
206
|
+
## Known Issues
|
207
|
+
|
208
|
+
1. Beaneater and/or Beanstalkd seems to transform a `tube` `name` with hyphens to
|
209
|
+
underscores upon instrospection of `stats`. See example. Reccommend using
|
210
|
+
names without hyphens / dashes.
|
211
|
+
|
212
|
+
```ruby
|
213
|
+
(main):001:0> Postburner.connection.tubes["backburner.worker.queue.cat-dog"].put("{}", delay: 1.week.to_i)
|
214
|
+
=> {:status=>"INSERTED", :id=>"9"}
|
215
|
+
irb(main):002:0> Postburner.connection.jobs.find(9)
|
216
|
+
=> #<Beaneater::Job id=9 body="{}">
|
217
|
+
irb(main):003:0> Postburner.connection.jobs.find(9).stats
|
218
|
+
=> #<Beaneater::StatStruct id=9, tube="backburner.worker.queue.cat_dog", state="delayed", pri=65536, age=23, delay=604800, ttr=120, time_left=604776, file=0, reserves=0, timeouts=0, releases=0, buries=0, kicks=0>
|
219
|
+
#
|
220
|
+
# NOTE 'cat-dog' on line 1 and 'cat_dog' on line 3.
|
221
|
+
#
|
222
|
+
```
|
223
|
+
|
206
224
|
## Installation
|
207
225
|
|
208
226
|
First [install beanstalkd](https://beanstalkd.github.io/download.html). On Debian-based systems, that goes like this:
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Postburner
|
2
|
+
class Tube
|
3
|
+
def initialize(tube)
|
4
|
+
@tube = tube
|
5
|
+
end
|
6
|
+
|
7
|
+
# Get all tubes as Postburner::Tube instances.
|
8
|
+
#
|
9
|
+
def self.all
|
10
|
+
Postburner.connection.tubes.all.map { |tube| self.new(tube) }
|
11
|
+
end
|
12
|
+
|
13
|
+
# Get all peeked ids across all known tubes.
|
14
|
+
#
|
15
|
+
def self.peek_ids
|
16
|
+
self.all.map(&:peek_ids).flatten.sort
|
17
|
+
end
|
18
|
+
|
19
|
+
# Get all peeked ids.
|
20
|
+
#
|
21
|
+
def peek_ids
|
22
|
+
[ :buried, :ready, :delayed ].map { |type| @tube.peek(type) }.
|
23
|
+
reject(&:nil?).map(&:id).map(&:to_i)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Get paginated array of jobs.
|
27
|
+
#
|
28
|
+
# Attempts to do this efficiently as possible, by peeking at known
|
29
|
+
# ids and exiting when count has been fulfilled.
|
30
|
+
#
|
31
|
+
# Just pass the last known id to after for the next batch.
|
32
|
+
#
|
33
|
+
def jobs(count=20, limit: 1000, after: nil)
|
34
|
+
stats = @tube.stats
|
35
|
+
jobs = Array.new
|
36
|
+
|
37
|
+
min_known = (
|
38
|
+
peek_ids.any? ? self.peek_ids.min : self.class.peek_ids.min
|
39
|
+
).to_i
|
40
|
+
min = after ? after + 1 : min_known
|
41
|
+
max = min + limit
|
42
|
+
|
43
|
+
for i in min..max
|
44
|
+
job = @tube.client.jobs.find(i)
|
45
|
+
jobs << job if job && stats[:name] == job.stats[:tube]
|
46
|
+
break if jobs.length >= count
|
47
|
+
end
|
48
|
+
|
49
|
+
return jobs
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
data/lib/postburner/version.rb
CHANGED
data/lib/postburner.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postburner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- lib/generators/postburner/install/templates/migrations/create_postburner_jobs.rb.erb
|
99
99
|
- lib/postburner.rb
|
100
100
|
- lib/postburner/engine.rb
|
101
|
+
- lib/postburner/tube.rb
|
101
102
|
- lib/postburner/version.rb
|
102
103
|
- lib/tasks/postburner_tasks.rake
|
103
104
|
homepage: https://gitlab.nearapogee.com/opensource/postburner
|