beanstalk-worker 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ $:.unshift File.dirname(__FILE__)
2
2
 
3
3
  module BeanStalk
4
4
  class Worker
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
  end
8
8
 
@@ -1,7 +1,7 @@
1
1
  require 'beanstalk-client'
2
2
 
3
3
  class BeanStalk::Worker
4
- attr_accessor :config, :log, :beanstalk, :stats
4
+ attr_accessor :config, :log, :connection, :stats
5
5
 
6
6
  def initialize(config = {})
7
7
  @config = BeanStalk::Worker::Config
@@ -21,22 +21,40 @@ class BeanStalk::Worker
21
21
  initialize_beanstalk
22
22
  end
23
23
 
24
- def initialize_beanstalk
25
- @beanstalk = Beanstalk::Pool.new([
24
+ def beanstalk
25
+ @connection ||= Beanstalk::Pool.new([
26
26
  BeanStalk::Worker::Config.beanstalk_uri
27
27
  ])
28
+ @logger.info("Connected to beanstalk")
29
+ rescue
30
+ @logger.error("Could not connect to beanstalk.")
31
+ reconnect
32
+ end
33
+
34
+ def initialize_beanstalk
35
+ # @beanstalk = Beanstalk::Pool.new([
36
+ # BeanStalk::Worker::Config.beanstalk_uri
37
+ # ])
28
38
 
29
- @beanstalk.watch(@config[:beanstalk][:tube])
30
- @beanstalk.use(@config[:beanstalk][:tube])
31
- @beanstalk.ignore('default')
39
+ beanstalk.watch(@config[:beanstalk][:tube])
40
+ beanstalk.use(@config[:beanstalk][:tube])
41
+ beanstalk.ignore('default')
32
42
  rescue
33
- @logger.error "Could not connect to beanstalk."
43
+ @logger.error("Could not connect to beanstalk.")
44
+ reconnect
45
+ end
46
+
47
+ def reconnect
48
+ @logger.error("Sleeping 30 seconds")
49
+ sleep(30)
50
+ @logger.error("Attempting to reconnect")
51
+ start
34
52
  end
35
53
 
36
54
  def start(received = -1)
37
55
  while (received == -1) || (@stats['received'] < received)
38
56
  begin
39
- job = @beanstalk.reserve
57
+ job = beanstalk.reserve
40
58
 
41
59
  @logger.debug("job #{job.inspect}")
42
60
  @logger.debug("job #{job.body.inspect}")
@@ -44,6 +62,9 @@ class BeanStalk::Worker
44
62
  @stats['received'] += 1
45
63
 
46
64
  job.delete if work(job)
65
+ rescue Beanstalk::NotConnected => e
66
+ @logger.error("Beanstalk disconnected")
67
+ reconnect
47
68
  rescue Exception => e
48
69
  @logger.error("Caught exception #{e.to_s}")
49
70
  exit
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beanstalk-worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Artem Veremey
@@ -9,25 +10,28 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-08-17 00:00:00.000000000 Z
13
+ date: 2013-08-28 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: beanstalk-client
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - '>='
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: '0'
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
- - - '>='
28
+ - - ! '>='
26
29
  - !ruby/object:Gem::Version
27
30
  version: '0'
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: mixlib-log
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
36
  - - ~>
33
37
  - !ruby/object:Gem::Version
@@ -35,6 +39,7 @@ dependencies:
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
44
  - - ~>
40
45
  - !ruby/object:Gem::Version
@@ -42,6 +47,7 @@ dependencies:
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: mixlib-config
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
52
  - - ~>
47
53
  - !ruby/object:Gem::Version
@@ -49,6 +55,7 @@ dependencies:
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
60
  - - ~>
54
61
  - !ruby/object:Gem::Version
@@ -56,6 +63,7 @@ dependencies:
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: mixlib-log-json
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
68
  - - ~>
61
69
  - !ruby/object:Gem::Version
@@ -63,6 +71,7 @@ dependencies:
63
71
  type: :runtime
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
76
  - - ~>
68
77
  - !ruby/object:Gem::Version
@@ -70,6 +79,7 @@ dependencies:
70
79
  - !ruby/object:Gem::Dependency
71
80
  name: yajl-ruby
72
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
84
  - - ~>
75
85
  - !ruby/object:Gem::Version
@@ -77,6 +87,7 @@ dependencies:
77
87
  type: :runtime
78
88
  prerelease: false
79
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
80
91
  requirements:
81
92
  - - ~>
82
93
  - !ruby/object:Gem::Version
@@ -84,6 +95,7 @@ dependencies:
84
95
  - !ruby/object:Gem::Dependency
85
96
  name: activesupport
86
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
87
99
  requirements:
88
100
  - - ~>
89
101
  - !ruby/object:Gem::Version
@@ -91,6 +103,7 @@ dependencies:
91
103
  type: :runtime
92
104
  prerelease: false
93
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
94
107
  requirements:
95
108
  - - ~>
96
109
  - !ruby/object:Gem::Version
@@ -98,62 +111,71 @@ dependencies:
98
111
  - !ruby/object:Gem::Dependency
99
112
  name: rspec
100
113
  requirement: !ruby/object:Gem::Requirement
114
+ none: false
101
115
  requirements:
102
- - - '>='
116
+ - - ! '>='
103
117
  - !ruby/object:Gem::Version
104
118
  version: 2.13.0
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
108
123
  requirements:
109
- - - '>='
124
+ - - ! '>='
110
125
  - !ruby/object:Gem::Version
111
126
  version: 2.13.0
112
127
  - !ruby/object:Gem::Dependency
113
128
  name: yard
114
129
  requirement: !ruby/object:Gem::Requirement
130
+ none: false
115
131
  requirements:
116
- - - '>'
132
+ - - ! '>'
117
133
  - !ruby/object:Gem::Version
118
134
  version: '0.8'
119
135
  type: :development
120
136
  prerelease: false
121
137
  version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
122
139
  requirements:
123
- - - '>'
140
+ - - ! '>'
124
141
  - !ruby/object:Gem::Version
125
142
  version: '0.8'
126
143
  - !ruby/object:Gem::Dependency
127
144
  name: rdoc
128
145
  requirement: !ruby/object:Gem::Requirement
146
+ none: false
129
147
  requirements:
130
- - - '>'
148
+ - - ! '>'
131
149
  - !ruby/object:Gem::Version
132
150
  version: '4.0'
133
151
  type: :development
134
152
  prerelease: false
135
153
  version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
136
155
  requirements:
137
- - - '>'
156
+ - - ! '>'
138
157
  - !ruby/object:Gem::Version
139
158
  version: '4.0'
140
159
  - !ruby/object:Gem::Dependency
141
160
  name: cucumber
142
161
  requirement: !ruby/object:Gem::Requirement
162
+ none: false
143
163
  requirements:
144
- - - '>='
164
+ - - ! '>='
145
165
  - !ruby/object:Gem::Version
146
166
  version: '0'
147
167
  type: :development
148
168
  prerelease: false
149
169
  version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
150
171
  requirements:
151
- - - '>='
172
+ - - ! '>='
152
173
  - !ruby/object:Gem::Version
153
174
  version: '0'
154
175
  - !ruby/object:Gem::Dependency
155
176
  name: bundler
156
177
  requirement: !ruby/object:Gem::Requirement
178
+ none: false
157
179
  requirements:
158
180
  - - ~>
159
181
  - !ruby/object:Gem::Version
@@ -161,6 +183,7 @@ dependencies:
161
183
  type: :development
162
184
  prerelease: false
163
185
  version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
164
187
  requirements:
165
188
  - - ~>
166
189
  - !ruby/object:Gem::Version
@@ -168,6 +191,7 @@ dependencies:
168
191
  - !ruby/object:Gem::Dependency
169
192
  name: jeweler
170
193
  requirement: !ruby/object:Gem::Requirement
194
+ none: false
171
195
  requirements:
172
196
  - - ~>
173
197
  - !ruby/object:Gem::Version
@@ -175,6 +199,7 @@ dependencies:
175
199
  type: :development
176
200
  prerelease: false
177
201
  version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
178
203
  requirements:
179
204
  - - ~>
180
205
  - !ruby/object:Gem::Version
@@ -182,29 +207,33 @@ dependencies:
182
207
  - !ruby/object:Gem::Dependency
183
208
  name: beanstalk-client-rspec
184
209
  requirement: !ruby/object:Gem::Requirement
210
+ none: false
185
211
  requirements:
186
- - - '>='
212
+ - - ! '>='
187
213
  - !ruby/object:Gem::Version
188
214
  version: '0'
189
215
  type: :development
190
216
  prerelease: false
191
217
  version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
192
219
  requirements:
193
- - - '>='
220
+ - - ! '>='
194
221
  - !ruby/object:Gem::Version
195
222
  version: '0'
196
223
  - !ruby/object:Gem::Dependency
197
224
  name: simplecov
198
225
  requirement: !ruby/object:Gem::Requirement
226
+ none: false
199
227
  requirements:
200
- - - '>='
228
+ - - ! '>='
201
229
  - !ruby/object:Gem::Version
202
230
  version: '0'
203
231
  type: :development
204
232
  prerelease: false
205
233
  version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
206
235
  requirements:
207
- - - '>='
236
+ - - ! '>='
208
237
  - !ruby/object:Gem::Version
209
238
  version: '0'
210
239
  description: Beanstalkd Worker base class
@@ -236,26 +265,29 @@ files:
236
265
  homepage: http://github.com/aia/beanstalk-worker
237
266
  licenses:
238
267
  - MIT
239
- metadata: {}
240
268
  post_install_message:
241
269
  rdoc_options: []
242
270
  require_paths:
243
271
  - lib
244
272
  required_ruby_version: !ruby/object:Gem::Requirement
273
+ none: false
245
274
  requirements:
246
- - - '>='
275
+ - - ! '>='
247
276
  - !ruby/object:Gem::Version
248
277
  version: '0'
278
+ segments:
279
+ - 0
280
+ hash: 3343727007483199408
249
281
  required_rubygems_version: !ruby/object:Gem::Requirement
282
+ none: false
250
283
  requirements:
251
- - - '>='
284
+ - - ! '>='
252
285
  - !ruby/object:Gem::Version
253
286
  version: '0'
254
287
  requirements: []
255
288
  rubyforge_project:
256
- rubygems_version: 2.0.5
289
+ rubygems_version: 1.8.25
257
290
  signing_key:
258
- specification_version: 4
291
+ specification_version: 3
259
292
  summary: Beanstalkd Worker base class
260
293
  test_files: []
261
- has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 77e7b0abdfdd60835bddcef4024d49042b838c2a
4
- data.tar.gz: 2a9ab5b5251df3270d6868f7f760bd63ee1f09e6
5
- SHA512:
6
- metadata.gz: 18a60f6d317de7c164522f2864a6ed1b76d751da38558c68e53bbbe00ea7c262981b71d2a789384d9f336ee0734bfe684bc02b1b77e056dc70f5b6b3db3d7c31
7
- data.tar.gz: 4d603dba338fe466c7b5becd6215d0a95d25204e831c9b1718d74672356ae104bb2ba06d43259469968e917371932b7ceaf91e02b4686f78ba51e4dfbbf7ef80