pampa 2.0.29 → 2.0.30

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.
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