pampa 2.0.29 → 2.0.30

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,75 +1,135 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pampa
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.29
4
+ version: 2.0.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-18 00:00:00.000000000 Z
11
+ date: 2023-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sequel
14
+ name: rubygems-bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.56.0
19
+ version: 1.4.5
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 5.56.0
22
+ version: 1.4.5
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 5.56.0
29
+ version: 1.4.5
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 5.56.0
32
+ version: 1.4.5
33
+ - !ruby/object:Gem::Dependency
34
+ name: sinatra
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 2.2.4
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.2.4
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 2.2.4
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.2.4
53
+ - !ruby/object:Gem::Dependency
54
+ name: colorize
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.8.1
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.8.1
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.8.1
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.8.1
33
73
  - !ruby/object:Gem::Dependency
34
74
  name: blackstack-core
35
75
  requirement: !ruby/object:Gem::Requirement
36
76
  requirements:
37
77
  - - "~>"
38
78
  - !ruby/object:Gem::Version
39
- version: 1.2.3
79
+ version: 1.2.15
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.2.15
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.2.15
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.2.15
93
+ - !ruby/object:Gem::Dependency
94
+ name: blackstack-db
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 1.0.1
40
100
  - - ">="
41
101
  - !ruby/object:Gem::Version
42
- version: 1.2.3
102
+ version: 1.0.1
43
103
  type: :runtime
44
104
  prerelease: false
45
105
  version_requirements: !ruby/object:Gem::Requirement
46
106
  requirements:
47
107
  - - "~>"
48
108
  - !ruby/object:Gem::Version
49
- version: 1.2.3
109
+ version: 1.0.1
50
110
  - - ">="
51
111
  - !ruby/object:Gem::Version
52
- version: 1.2.3
112
+ version: 1.0.1
53
113
  - !ruby/object:Gem::Dependency
54
114
  name: blackstack-nodes
55
115
  requirement: !ruby/object:Gem::Requirement
56
116
  requirements:
57
117
  - - "~>"
58
118
  - !ruby/object:Gem::Version
59
- version: 1.2.11
119
+ version: 1.2.12
60
120
  - - ">="
61
121
  - !ruby/object:Gem::Version
62
- version: 1.2.11
122
+ version: 1.2.12
63
123
  type: :runtime
64
124
  prerelease: false
65
125
  version_requirements: !ruby/object:Gem::Requirement
66
126
  requirements:
67
127
  - - "~>"
68
128
  - !ruby/object:Gem::Version
69
- version: 1.2.11
129
+ version: 1.2.12
70
130
  - - ">="
71
131
  - !ruby/object:Gem::Version
72
- version: 1.2.11
132
+ version: 1.2.12
73
133
  - !ruby/object:Gem::Dependency
74
134
  name: simple_command_line_parser
75
135
  requirement: !ruby/object:Gem::Requirement
@@ -134,8 +194,11 @@ extensions: []
134
194
  extra_rdoc_files: []
135
195
  files:
136
196
  - lib/pampa.rb
137
- - worker.rb
138
- homepage: https://rubygems.org/gems/pampa
197
+ - lib/pampa/app.rb
198
+ - lib/pampa/dispatcher.rb
199
+ - lib/pampa/worker.rb
200
+ - pampa.gemspec
201
+ homepage: https://github.com/leandrosardi/pampa
139
202
  licenses:
140
203
  - MIT
141
204
  metadata: {}
data/worker.rb DELETED
@@ -1,147 +0,0 @@
1
- # require the gem simple_cloud_logging for parsing command line parameters.
2
- require 'simple_command_line_parser'
3
- # require the gem simple_cloud_logging for writing logfiles.
4
- require 'simple_cloud_logging'
5
- # require the gem sequel for connecting to the database and handle ORM classes.
6
- require 'sequel'
7
-
8
- # parse command line parameters
9
- PARSER = BlackStack::SimpleCommandLineParser.new(
10
- :description => 'This script starts an infinite loop. Each loop will look for a task to perform. Must be a delay between each loop.',
11
- :configuration => [{
12
- :name=>'delay',
13
- :mandatory=>false,
14
- :default=>30,
15
- :description=>'Minimum delay between loops. A minimum of 10 seconds is recommended, in order to don\'t hard the database server. Default is 30 seconds.',
16
- :type=>BlackStack::SimpleCommandLineParser::INT,
17
- }, {
18
- :name=>'debug',
19
- :mandatory=>false,
20
- :default=>false,
21
- :description=>'Activate this flag if you want to require the `pampa.rb` file from the same Pampa project folder, insetad to require the gem as usual.',
22
- :type=>BlackStack::SimpleCommandLineParser::BOOL,
23
- }, {
24
- :name=>'pampa',
25
- :mandatory=>false,
26
- :default=>'./lib/pampa.rb',
27
- :description=>'Ruby file to require where `debug` is activated.',
28
- :type=>BlackStack::SimpleCommandLineParser::STRING,
29
- }, {
30
- :name=>'config',
31
- :mandatory=>false,
32
- :default=>'./config.rb',
33
- :description=>'Ruby file where is defined the connection-string and jobs.',
34
- :type=>BlackStack::SimpleCommandLineParser::STRING,
35
- }, {
36
- :name=>'id',
37
- :mandatory=>true,
38
- :description=>'Write here a unique identifier for the worker.',
39
- :type=>BlackStack::SimpleCommandLineParser::STRING,
40
- }]
41
- )
42
-
43
- # creating logfile
44
- l = BlackStack::LocalLogger.new('worker.'+PARSER.value('id').to_s+'.log')
45
-
46
- begin
47
- # log the paramers
48
- l.log 'STARTING WORKER'
49
-
50
- # show the parameters
51
- # TODO: replace this hardocded array for method `PARSER.params`.
52
- # reference: https://github.com/leandrosardi/simple_command_line_parser/issues/7
53
- #['id','delay','debug','pampa','config'].each { |param| l.log param + ': ' + PARSER.value(param).to_s }
54
-
55
- # require the pampa library
56
- l.logs 'Requiring pampa (debug='+(PARSER.value('debug') ? 'true' : 'false')+', pampa='+PARSER.value('pampa')+')... '
57
- require 'pampa' if !PARSER.value('debug')
58
- require PARSER.value('pampa') if PARSER.value('debug')
59
- l.done
60
-
61
- # requiore the config.rb file where the jobs are defined.
62
- l.logs 'Requiring config (config='+PARSER.value('config')+')... '
63
- require PARSER.value('config')
64
- l.done
65
-
66
- # getting the worker object
67
- worker = BlackStack::Pampa.workers.select { |w| w.id == PARSER.value('id') }.first
68
- raise 'Worker '+PARSER.value('id')+' not found.' if worker.nil?
69
-
70
- # start the loop
71
- while true
72
- # get the start loop time
73
- l.logs 'Starting loop... '
74
- start = Time.now()
75
- l.done
76
-
77
- BlackStack::Pampa.jobs.each { |job|
78
- l.logs 'Processing job '+job.name+'... '
79
- tasks = job.occupied_slots(worker)
80
- l.logf tasks.size.to_s+' tasks in queue.'
81
-
82
- tasks.each { |task|
83
- l.logs 'Flag task '+job.name+'.'+task[job.field_primary_key.to_sym].to_s+' started... '
84
- job.start(task)
85
- l.done
86
-
87
- begin
88
- l.logs 'Processing task '+task[job.field_primary_key.to_sym].to_s+'... '
89
- job.processing_function.call(task, l, job, worker)
90
- l.done
91
-
92
- l.logs 'Flag task '+job.name+'.'+task[job.field_primary_key.to_sym].to_s+' finished... '
93
- job.finish(task)
94
- l.done
95
-
96
- # note: this catches the CTRL+C signal.
97
- # note: this catches the `kill` command, ONLY if it has not the `-9` option.
98
- rescue SignalException, SystemExit, Interrupt => e
99
- l.logs 'Flag task '+job.name+'.'+task[job.field_primary_key.to_sym].to_s+' interrumpted... '
100
- job.finish(task, e)
101
- l.done
102
-
103
- log.logf 'Bye!'
104
-
105
- raise e
106
-
107
- rescue => e
108
- l.logs 'Flag task '+job.name+'.'+task[job.field_primary_key.to_sym].to_s+' failed... '
109
- job.finish(task, e)
110
- l.done
111
-
112
- l.logf 'Error: '+e.to_console
113
- end
114
- }
115
- }
116
-
117
- # get the end loop time
118
- l.logs 'Ending loop... '
119
- finish = Time.now()
120
- l.done
121
-
122
- # get different in seconds between start and finish
123
- # if diff > 30 seconds
124
- l.logs 'Calculating loop duration... '
125
- diff = finish - start
126
- l.logf 'done ('+diff.to_s+')'
127
-
128
- if diff < PARSER.value('delay')
129
- # sleep for 30 seconds
130
- n = PARSER.value('delay')-diff
131
-
132
- l.logs 'Sleeping for '+n.to_label+' seconds... '
133
- sleep n
134
- l.done
135
- else
136
- l.log 'No sleeping. The loop took '+diff.to_label+' seconds.'
137
- end
138
- end # while true
139
- rescue SignalException, SystemExit, Interrupt
140
- # note: this catches the CTRL+C signal.
141
- # note: this catches the `kill` command, ONLY if it has not the `-9` option.
142
- l.logf 'Process Interrumpted.'
143
- rescue => e
144
- l.logf 'Fatal Error: '+e.to_console
145
- rescue
146
- l.logf 'Unknown Fatal Error.'
147
- end