sidekiq 4.2.9 → 4.2.10
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.github/issue_template.md +6 -1
- data/.travis.yml +10 -5
- data/Changes.md +9 -0
- data/Ent-Changes.md +9 -0
- data/Pro-Changes.md +29 -0
- data/bin/sidekiqload +11 -11
- data/lib/sidekiq.rb +1 -1
- data/lib/sidekiq/api.rb +20 -12
- data/lib/sidekiq/middleware/server/logging.rb +8 -17
- data/lib/sidekiq/processor.rb +16 -7
- data/lib/sidekiq/testing.rb +6 -0
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/application.rb +2 -2
- data/lib/sidekiq/web/helpers.rb +2 -1
- data/sidekiq.gemspec +8 -2
- data/web/assets/javascripts/dashboard.js +1 -1
- data/web/locales/fa.yml +79 -0
- data/web/views/_job_info.erb +1 -1
- data/web/views/dashboard.erb +2 -2
- data/web/views/morgue.erb +2 -0
- data/web/views/queue.erb +2 -2
- data/web/views/queues.erb +2 -2
- data/web/views/retry.erb +1 -1
- metadata +74 -63
- data/test/config.yml +0 -9
- data/test/env_based_config.yml +0 -11
- data/test/fake_env.rb +0 -1
- data/test/fixtures/en.yml +0 -2
- data/test/helper.rb +0 -75
- data/test/test_actors.rb +0 -138
- data/test/test_api.rb +0 -528
- data/test/test_cli.rb +0 -418
- data/test/test_client.rb +0 -266
- data/test/test_exception_handler.rb +0 -56
- data/test/test_extensions.rb +0 -129
- data/test/test_fetch.rb +0 -50
- data/test/test_launcher.rb +0 -92
- data/test/test_logging.rb +0 -35
- data/test/test_manager.rb +0 -50
- data/test/test_middleware.rb +0 -158
- data/test/test_processor.rb +0 -249
- data/test/test_rails.rb +0 -22
- data/test/test_redis_connection.rb +0 -132
- data/test/test_retry.rb +0 -326
- data/test/test_retry_exhausted.rb +0 -149
- data/test/test_scheduled.rb +0 -115
- data/test/test_scheduling.rb +0 -58
- data/test/test_sidekiq.rb +0 -107
- data/test/test_testing.rb +0 -143
- data/test/test_testing_fake.rb +0 -359
- data/test/test_testing_inline.rb +0 -94
- data/test/test_util.rb +0 -13
- data/test/test_web.rb +0 -679
- data/test/test_web_helpers.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 595500a3810c25e8e04e86c644f966ff01cb035f
|
4
|
+
data.tar.gz: 3f92a9f61e61848bc2c0639469ce3588f3848fc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4e97c3665d1e902f47cfb579fda437dc834ac4b584606f1ca3b8fd9225e8502cacf5fb687673b4735b359de6af179589759a34369f1c74e904b37f8fe70a4ee
|
7
|
+
data.tar.gz: a4e6d41067bf6b88c77577def0c1f9ecc3f5d46f0bdfb0821952c26867e91a71c64231aab09a25096d22c3272dea2dcc37547bc6096dd7622a192fa00e0a4e50
|
data/.github/issue_template.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
Ruby version:
|
2
2
|
Sidekiq / Pro / Enterprise version(s):
|
3
3
|
|
4
|
-
|
4
|
+
Please include your initializer and any error message with the full backtrace.
|
5
|
+
|
6
|
+
Are you using an old version?
|
7
|
+
Have you checked the changelog to see if your issue has been fixed in a later version?
|
8
|
+
|
9
|
+
https://github.com/mperham/sidekiq/blob/master/Changes.md
|
data/.travis.yml
CHANGED
@@ -6,8 +6,13 @@ services:
|
|
6
6
|
before_install:
|
7
7
|
- gem install bundler
|
8
8
|
- gem update bundler
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
matrix:
|
10
|
+
include:
|
11
|
+
- rvm: 2.2.4
|
12
|
+
env: "PERCY_ENABLE=0"
|
13
|
+
- rvm: 2.3.0
|
14
|
+
env: "PERCY_ENABLE=0"
|
15
|
+
- rvm: 2.4.0
|
16
|
+
env: "PERCY_ENABLE=1"
|
17
|
+
- rvm: jruby-9.1.6.0
|
18
|
+
env: "PERCY_ENABLE=0"
|
data/Changes.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Sidekiq Changes
|
2
2
|
|
3
|
+
HEAD
|
4
|
+
-----------
|
5
|
+
|
6
|
+
- Scheduled jobs can now be moved directly to the Dead queue via API [#3390]
|
7
|
+
- Fix edge case leading to job duplication when using Sidekiq Pro's
|
8
|
+
reliability feature [#3388]
|
9
|
+
- Fix error class name display on retry page [#3348]
|
10
|
+
- More robust latency calculation [#3340]
|
11
|
+
|
3
12
|
4.2.9
|
4
13
|
-----------
|
5
14
|
|
data/Ent-Changes.md
CHANGED
@@ -3,6 +3,15 @@ Sidekiq Enterprise Changelog
|
|
3
3
|
|
4
4
|
Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
|
5
5
|
|
6
|
+
1.5.2
|
7
|
+
-------------
|
8
|
+
|
9
|
+
- Fix encrypted arguments double-encrypted by retry or rate limiting [#3368]
|
10
|
+
- Fix leak in concurrent rate limiter, run this in Rails console to clean up existing data [#3323]
|
11
|
+
```ruby
|
12
|
+
expiry = 1.month.to_i; Sidekiq::Limiter.redis { |c| c.scan_each(match: "lmtr-cfree-*") { |key| c.expire(key, expiry) } }
|
13
|
+
```
|
14
|
+
|
6
15
|
1.5.1
|
7
16
|
-------------
|
8
17
|
|
data/Pro-Changes.md
CHANGED
@@ -3,6 +3,35 @@ Sidekiq Pro Changelog
|
|
3
3
|
|
4
4
|
Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
|
5
5
|
|
6
|
+
HEAD
|
7
|
+
---------
|
8
|
+
|
9
|
+
- Make Batch UI progress bar more friendly to the colorblind [#3387]
|
10
|
+
|
11
|
+
3.4.5
|
12
|
+
---------
|
13
|
+
|
14
|
+
- Fix potential job loss with reliable scheduler when lots of jobs are scheduled
|
15
|
+
at precisely the same time. Thanks to raivil for his hard work in
|
16
|
+
reproducing the bug. [#3371]
|
17
|
+
|
18
|
+
3.4.4
|
19
|
+
---------
|
20
|
+
|
21
|
+
- Optimize super\_fetch shutdown to restart jobs quicker [#3249]
|
22
|
+
|
23
|
+
3.4.3
|
24
|
+
---------
|
25
|
+
|
26
|
+
- Limit reliable scheduler to enqueue up to 100 jobs per call, minimizing Redis latency [#3332]
|
27
|
+
- Fix bug in super\_fetch logic for queues with `_` in the name [#3339]
|
28
|
+
|
29
|
+
3.4.2
|
30
|
+
---------
|
31
|
+
|
32
|
+
- Add `Batch::Status#invalidated?` API which returns true if any/all
|
33
|
+
JIDs were invalidated within the batch. [#3326]
|
34
|
+
|
6
35
|
3.4.1
|
7
36
|
---------
|
8
37
|
|
data/bin/sidekiqload
CHANGED
@@ -14,7 +14,7 @@ include Sidekiq::Util
|
|
14
14
|
|
15
15
|
Sidekiq.configure_server do |config|
|
16
16
|
#config.options[:concurrency] = 1
|
17
|
-
config.redis = {
|
17
|
+
config.redis = { db: 13 }
|
18
18
|
config.options[:queues] << 'default'
|
19
19
|
config.logger.level = Logger::ERROR
|
20
20
|
config.average_scheduled_poll_interval = 2
|
@@ -36,14 +36,14 @@ end
|
|
36
36
|
# brew tap shopify/shopify
|
37
37
|
# brew install toxiproxy
|
38
38
|
# gem install toxiproxy
|
39
|
-
require 'toxiproxy'
|
39
|
+
#require 'toxiproxy'
|
40
40
|
# simulate a non-localhost network for realer-world conditions.
|
41
41
|
# adding 1ms of network latency has an ENORMOUS impact on benchmarks
|
42
|
-
Toxiproxy.populate([{
|
43
|
-
"name": "redis",
|
44
|
-
"listen": "127.0.0.1:6380",
|
45
|
-
"upstream": "127.0.0.1:6379"
|
46
|
-
}])
|
42
|
+
#Toxiproxy.populate([{
|
43
|
+
#"name": "redis",
|
44
|
+
#"listen": "127.0.0.1:6380",
|
45
|
+
#"upstream": "127.0.0.1:6379"
|
46
|
+
#}])
|
47
47
|
|
48
48
|
self_read, self_write = IO.pipe
|
49
49
|
%w(INT TERM USR1 USR2 TTIN).each do |sig|
|
@@ -108,7 +108,7 @@ Sidekiq.logger.error "Created #{count*iter} jobs"
|
|
108
108
|
Monitoring = Thread.new do
|
109
109
|
watchdog("monitor thread") do
|
110
110
|
while true
|
111
|
-
sleep
|
111
|
+
sleep 1
|
112
112
|
qsize, retries = Sidekiq.redis do |conn|
|
113
113
|
conn.pipelined do
|
114
114
|
conn.llen "queue:default"
|
@@ -130,8 +130,8 @@ begin
|
|
130
130
|
#RubyProf::exclude_threads = [ Monitoring ]
|
131
131
|
#RubyProf.start
|
132
132
|
fire_event(:startup)
|
133
|
-
Sidekiq.logger.error "Simulating 1ms of latency between Sidekiq and redis"
|
134
|
-
Toxiproxy[:redis].downstream(:latency, latency: 1).apply do
|
133
|
+
#Sidekiq.logger.error "Simulating 1ms of latency between Sidekiq and redis"
|
134
|
+
#Toxiproxy[:redis].downstream(:latency, latency: 1).apply do
|
135
135
|
launcher = Sidekiq::Launcher.new(Sidekiq.options)
|
136
136
|
launcher.run
|
137
137
|
|
@@ -139,7 +139,7 @@ begin
|
|
139
139
|
signal = readable_io.first[0].gets.strip
|
140
140
|
handle_signal(launcher, signal)
|
141
141
|
end
|
142
|
-
end
|
142
|
+
#end
|
143
143
|
rescue SystemExit => e
|
144
144
|
#Sidekiq.logger.error("Profiling...")
|
145
145
|
#result = RubyProf.stop
|
data/lib/sidekiq.rb
CHANGED
data/lib/sidekiq/api.rb
CHANGED
@@ -75,7 +75,10 @@ module Sidekiq
|
|
75
75
|
enqueued = pipe2_res[s..-1].map(&:to_i).inject(0, &:+)
|
76
76
|
|
77
77
|
default_queue_latency = if (entry = pipe1_res[6].first)
|
78
|
-
|
78
|
+
job = Sidekiq.load_json(entry)
|
79
|
+
now = Time.now.to_f
|
80
|
+
thence = job['enqueued_at'.freeze] || now
|
81
|
+
now - thence
|
79
82
|
else
|
80
83
|
0
|
81
84
|
end
|
@@ -225,7 +228,10 @@ module Sidekiq
|
|
225
228
|
conn.lrange(@rname, -1, -1)
|
226
229
|
end.first
|
227
230
|
return 0 unless entry
|
228
|
-
|
231
|
+
job = Sidekiq.load_json(entry)
|
232
|
+
now = Time.now.to_f
|
233
|
+
thence = job['enqueued_at'] || now
|
234
|
+
now - thence
|
229
235
|
end
|
230
236
|
|
231
237
|
def each
|
@@ -351,7 +357,8 @@ module Sidekiq
|
|
351
357
|
end
|
352
358
|
|
353
359
|
def latency
|
354
|
-
Time.now.to_f
|
360
|
+
now = Time.now.to_f
|
361
|
+
now - (@item['enqueued_at'] || @item['created_at'] || now)
|
355
362
|
end
|
356
363
|
|
357
364
|
##
|
@@ -416,10 +423,9 @@ module Sidekiq
|
|
416
423
|
end
|
417
424
|
|
418
425
|
def retry
|
419
|
-
raise "Retry not available on jobs which have not failed" unless item["failed_at"]
|
420
426
|
remove_job do |message|
|
421
427
|
msg = Sidekiq.load_json(message)
|
422
|
-
msg['retry_count'] -= 1
|
428
|
+
msg['retry_count'] -= 1 if msg['retry_count']
|
423
429
|
Sidekiq::Client.push(msg)
|
424
430
|
end
|
425
431
|
end
|
@@ -427,9 +433,7 @@ module Sidekiq
|
|
427
433
|
##
|
428
434
|
# Place job in the dead set
|
429
435
|
def kill
|
430
|
-
raise 'Kill not available on jobs which have not failed' unless item['failed_at']
|
431
436
|
remove_job do |message|
|
432
|
-
Sidekiq.logger.info { "Killing job #{message['jid']}" }
|
433
437
|
now = Time.now.to_f
|
434
438
|
Sidekiq.redis do |conn|
|
435
439
|
conn.multi do
|
@@ -441,6 +445,10 @@ module Sidekiq
|
|
441
445
|
end
|
442
446
|
end
|
443
447
|
|
448
|
+
def error?
|
449
|
+
!!item['error_class']
|
450
|
+
end
|
451
|
+
|
444
452
|
private
|
445
453
|
|
446
454
|
def remove_job
|
@@ -585,13 +593,13 @@ module Sidekiq
|
|
585
593
|
# Allows enumeration of scheduled jobs within Sidekiq.
|
586
594
|
# Based on this, you can search/filter for jobs. Here's an
|
587
595
|
# example where I'm selecting all jobs of a certain type
|
588
|
-
# and deleting them from the
|
596
|
+
# and deleting them from the schedule queue.
|
589
597
|
#
|
590
598
|
# r = Sidekiq::ScheduledSet.new
|
591
|
-
# r.select do |
|
592
|
-
#
|
593
|
-
#
|
594
|
-
#
|
599
|
+
# r.select do |scheduled|
|
600
|
+
# scheduled.klass == 'Sidekiq::Extensions::DelayedClass' &&
|
601
|
+
# scheduled.args[0] == 'User' &&
|
602
|
+
# scheduled.args[1] == 'setup_new_subscriber'
|
595
603
|
# end.map(&:delete)
|
596
604
|
class ScheduledSet < JobSet
|
597
605
|
def initialize
|
@@ -4,28 +4,19 @@ module Sidekiq
|
|
4
4
|
class Logging
|
5
5
|
|
6
6
|
def call(worker, item, queue)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
raise
|
16
|
-
end
|
7
|
+
begin
|
8
|
+
start = Time.now
|
9
|
+
logger.info("start".freeze)
|
10
|
+
yield
|
11
|
+
logger.info("done: #{elapsed(start)} sec")
|
12
|
+
rescue Exception
|
13
|
+
logger.info("fail: #{elapsed(start)} sec")
|
14
|
+
raise
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
18
|
private
|
21
19
|
|
22
|
-
# If we're using a wrapper class, like ActiveJob, use the "wrapped"
|
23
|
-
# attribute to expose the underlying thing.
|
24
|
-
def log_context(worker, item)
|
25
|
-
klass = item['wrapped'.freeze] || worker.class.to_s
|
26
|
-
"#{klass} JID-#{item['jid'.freeze]}#{" BID-#{item['bid'.freeze]}" if item['bid'.freeze]}"
|
27
|
-
end
|
28
|
-
|
29
20
|
def elapsed(start)
|
30
21
|
(Time.now - start).round(3)
|
31
22
|
end
|
data/lib/sidekiq/processor.rb
CHANGED
@@ -129,13 +129,15 @@ module Sidekiq
|
|
129
129
|
worker.jid = job_hash['jid'.freeze]
|
130
130
|
|
131
131
|
stats(worker, job_hash, queue) do
|
132
|
-
Sidekiq.
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
132
|
+
Sidekiq::Logging.with_context(log_context(job_hash)) do
|
133
|
+
ack = true
|
134
|
+
Sidekiq.server_middleware.invoke(worker, job_hash, queue) do
|
135
|
+
@executor.call do
|
136
|
+
# Only ack if we either attempted to start this job or
|
137
|
+
# successfully completed it. This prevents us from
|
138
|
+
# losing jobs if a middleware raises an exception before yielding
|
139
|
+
execute_job(worker, cloned(job_hash['args'.freeze]))
|
140
|
+
end
|
139
141
|
end
|
140
142
|
end
|
141
143
|
end
|
@@ -154,6 +156,13 @@ module Sidekiq
|
|
154
156
|
end
|
155
157
|
end
|
156
158
|
|
159
|
+
# If we're using a wrapper class, like ActiveJob, use the "wrapped"
|
160
|
+
# attribute to expose the underlying thing.
|
161
|
+
def log_context(item)
|
162
|
+
klass = item['wrapped'.freeze] || item['class'.freeze]
|
163
|
+
"#{klass} JID-#{item['jid'.freeze]}#{" BID-#{item['bid'.freeze]}" if item['bid'.freeze]}"
|
164
|
+
end
|
165
|
+
|
157
166
|
def execute_job(worker, cloned_args)
|
158
167
|
worker.perform(*cloned_args)
|
159
168
|
end
|
data/lib/sidekiq/testing.rb
CHANGED
@@ -316,3 +316,9 @@ module Sidekiq
|
|
316
316
|
end
|
317
317
|
end
|
318
318
|
end
|
319
|
+
|
320
|
+
if defined?(::Rails) && !Rails.env.test?
|
321
|
+
puts("**************************************************")
|
322
|
+
puts("⛔️ WARNING: Sidekiq testing API enabled, but this is not the test environment. Your jobs will not go to Redis.")
|
323
|
+
puts("**************************************************")
|
324
|
+
end
|
data/lib/sidekiq/version.rb
CHANGED
@@ -85,7 +85,7 @@ module Sidekiq
|
|
85
85
|
name = route_params[:name]
|
86
86
|
Sidekiq::Job.new(params['key_val'], name).delete
|
87
87
|
|
88
|
-
redirect_with_query("#{root_path}queues/#{name}")
|
88
|
+
redirect_with_query("#{root_path}queues/#{CGI.escape(name)}")
|
89
89
|
end
|
90
90
|
|
91
91
|
get '/morgue' do
|
@@ -281,7 +281,7 @@ module Sidekiq
|
|
281
281
|
when :json
|
282
282
|
{ "Content-Type" => "application/json", "Cache-Control" => "no-cache" }
|
283
283
|
when String
|
284
|
-
{ "Content-Type" => action.type, "Cache-Control" => "no-cache" }
|
284
|
+
{ "Content-Type" => (action.type || "text/html"), "Cache-Control" => "no-cache" }
|
285
285
|
else
|
286
286
|
{ "Content-Type" => "text/html", "Cache-Control" => "no-cache" }
|
287
287
|
end
|
data/lib/sidekiq/web/helpers.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
require 'uri'
|
3
3
|
require 'set'
|
4
4
|
require 'yaml'
|
5
|
+
require 'cgi'
|
5
6
|
|
6
7
|
module Sidekiq
|
7
8
|
# This is not a public API
|
@@ -161,7 +162,7 @@ module Sidekiq
|
|
161
162
|
def qparams(options)
|
162
163
|
options = options.stringify_keys
|
163
164
|
params.merge(options).map do |key, value|
|
164
|
-
SAFE_QPARAMS.include?(key) ? "#{key}=#{value}" : next
|
165
|
+
SAFE_QPARAMS.include?(key) ? "#{key}=#{CGI.escape(value.to_s)}" : next
|
165
166
|
end.compact.join("&")
|
166
167
|
end
|
167
168
|
|
data/sidekiq.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.license = "LGPL-3.0"
|
11
11
|
|
12
12
|
gem.executables = ['sidekiq', 'sidekiqctl']
|
13
|
-
gem.files = `git ls-files | grep -Ev '^(myapp|examples)'`.split("\n")
|
14
|
-
gem.test_files =
|
13
|
+
gem.files = `git ls-files | grep -Ev '^(test|myapp|examples)'`.split("\n")
|
14
|
+
gem.test_files = []
|
15
15
|
gem.name = "sidekiq"
|
16
16
|
gem.require_paths = ["lib"]
|
17
17
|
gem.version = Sidekiq::VERSION
|
@@ -23,4 +23,10 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_development_dependency 'minitest', '~> 5.10', '>= 5.10.1'
|
24
24
|
gem.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
gem.add_development_dependency 'rails', '>= 3.2.0'
|
26
|
+
|
27
|
+
gem.add_development_dependency 'capybara', '~> 2.11'
|
28
|
+
gem.add_development_dependency 'poltergeist', '~> 1.12'
|
29
|
+
gem.add_development_dependency 'percy-capybara', '~> 2.3'
|
30
|
+
gem.add_development_dependency 'timecop', '~> 0.8'
|
31
|
+
gem.add_development_dependency 'mocha', '~> 1.1'
|
26
32
|
end
|
@@ -20,7 +20,7 @@ factory.defined&&factory.defined(function(d){return d.y!==null});return factory}
|
|
20
20
|
var poller;
|
21
21
|
|
22
22
|
var realtimeGraph = function(updatePath) {
|
23
|
-
var timeInterval = parseInt(localStorage.timeInterval || '
|
23
|
+
var timeInterval = parseInt(localStorage.timeInterval || '5000');
|
24
24
|
|
25
25
|
var graphElement = document.getElementById("realtime");
|
26
26
|
|
data/web/locales/fa.yml
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# elements like %{queue} are variables and should not be translated
|
2
|
+
fa: # <---- change this to your locale code
|
3
|
+
Dashboard: داشبورد
|
4
|
+
Status: اعلان
|
5
|
+
Time: رمان
|
6
|
+
Namespace: فضای نام
|
7
|
+
Realtime: زنده
|
8
|
+
History: تاریخچه
|
9
|
+
Busy: مشغول
|
10
|
+
Processed: پردازش شده
|
11
|
+
Failed: ناموفق
|
12
|
+
Scheduled: زمان بندی
|
13
|
+
Retries: تکرار
|
14
|
+
Enqueued: صف بندی نشدند
|
15
|
+
Worker: کارگزار
|
16
|
+
LivePoll: Live Poll
|
17
|
+
StopPolling: Stop Polling
|
18
|
+
Queue: صف
|
19
|
+
Class: کلاس
|
20
|
+
Job: کار
|
21
|
+
Arguments: آرگومنت
|
22
|
+
Extras: اضافی
|
23
|
+
Started: شروع شده
|
24
|
+
ShowAll: نمایش همه
|
25
|
+
CurrentMessagesInQueue: کار فعلی در <span class='title'>%{queue}</span>
|
26
|
+
Delete: حذف
|
27
|
+
AddToQueue: افزودن به صف
|
28
|
+
AreYouSureDeleteJob: آیا شما مطمعن هستید از حذف این کار ؟
|
29
|
+
AreYouSureDeleteQueue: ایا شما مطمعنید از حذف %{queue} ?
|
30
|
+
Queues: صف ها
|
31
|
+
Size: سایز
|
32
|
+
Actions: اعمال
|
33
|
+
NextRetry: بار دیگر تلاش کنید
|
34
|
+
RetryCount: تعداد تلاش ها
|
35
|
+
RetryNow: تلاش مجدد
|
36
|
+
Kill: کشتن
|
37
|
+
LastRetry: آخرین تلاش
|
38
|
+
OriginallyFailed: Originally Failed
|
39
|
+
AreYouSure: آیا مطمعن هستید?
|
40
|
+
DeleteAll: حذف همه
|
41
|
+
RetryAll: تلاش مجدد برای همه
|
42
|
+
NoRetriesFound: هیچ تلاش پیدا نشد
|
43
|
+
Error: خطا
|
44
|
+
ErrorClass: خطا کلاس
|
45
|
+
ErrorMessage: پیغام خطا
|
46
|
+
ErrorBacktrace: خطای معکوس
|
47
|
+
GoBack: ← برگشت
|
48
|
+
NoScheduledFound: هیچ کار برنامه ریزی شده ای یافت نشد
|
49
|
+
When: وقتی که
|
50
|
+
ScheduledJobs: کار برنامه ریزی شده
|
51
|
+
idle: بیهودی
|
52
|
+
active: فعال
|
53
|
+
Version: ورژن
|
54
|
+
Connections: ارتباطات
|
55
|
+
MemoryUsage: حافظه استفاده شده
|
56
|
+
PeakMemoryUsage: اوج حافظه استفاده شده
|
57
|
+
Uptime: آپ تایم (روز)
|
58
|
+
OneWeek: ۱ هفته
|
59
|
+
OneMonth: ۱ ماه
|
60
|
+
ThreeMonths: ۳ ماه
|
61
|
+
SixMonths: ۶ ماه
|
62
|
+
Failures: شکست ها
|
63
|
+
DeadJobs: کار مرده
|
64
|
+
NoDeadJobsFound: کار مرده ای یافت نشد
|
65
|
+
Dead: مرده
|
66
|
+
Processes: پردازش ها
|
67
|
+
Thread: رشته
|
68
|
+
Threads: رشته ها
|
69
|
+
Jobs: کار ها
|
70
|
+
Paused: مکث
|
71
|
+
Stop: توقف
|
72
|
+
Quiet: خروج
|
73
|
+
StopAll: توقف همه
|
74
|
+
QuietAll: خروج همه
|
75
|
+
PollingInterval: Polling interval
|
76
|
+
Plugins: پلاگین ها
|
77
|
+
NotYetEnqueued: بدون صف بندی
|
78
|
+
CreatedAt: ساخته شده در
|
79
|
+
BackToApp: برگشت به برنامه
|