sidekiq 6.3.1 → 7.0.7

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.

Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +205 -11
  3. data/LICENSE.txt +9 -0
  4. data/README.md +45 -32
  5. data/bin/sidekiq +4 -9
  6. data/bin/sidekiqload +189 -117
  7. data/bin/sidekiqmon +4 -1
  8. data/lib/generators/sidekiq/job_generator.rb +57 -0
  9. data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
  10. data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
  11. data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
  12. data/lib/sidekiq/api.rb +308 -188
  13. data/lib/sidekiq/capsule.rb +127 -0
  14. data/lib/sidekiq/cli.rb +85 -80
  15. data/lib/sidekiq/client.rb +74 -81
  16. data/lib/sidekiq/{util.rb → component.rb} +13 -40
  17. data/lib/sidekiq/config.rb +270 -0
  18. data/lib/sidekiq/deploy.rb +62 -0
  19. data/lib/sidekiq/embedded.rb +61 -0
  20. data/lib/sidekiq/fetch.rb +23 -24
  21. data/lib/sidekiq/job.rb +375 -10
  22. data/lib/sidekiq/job_logger.rb +16 -28
  23. data/lib/sidekiq/job_retry.rb +81 -57
  24. data/lib/sidekiq/job_util.rb +105 -0
  25. data/lib/sidekiq/launcher.rb +103 -95
  26. data/lib/sidekiq/logger.rb +9 -44
  27. data/lib/sidekiq/manager.rb +40 -41
  28. data/lib/sidekiq/metrics/query.rb +153 -0
  29. data/lib/sidekiq/metrics/shared.rb +95 -0
  30. data/lib/sidekiq/metrics/tracking.rb +136 -0
  31. data/lib/sidekiq/middleware/chain.rb +96 -51
  32. data/lib/sidekiq/middleware/current_attributes.rb +17 -13
  33. data/lib/sidekiq/middleware/i18n.rb +6 -4
  34. data/lib/sidekiq/middleware/modules.rb +21 -0
  35. data/lib/sidekiq/monitor.rb +17 -4
  36. data/lib/sidekiq/paginator.rb +17 -9
  37. data/lib/sidekiq/processor.rb +60 -60
  38. data/lib/sidekiq/rails.rb +12 -10
  39. data/lib/sidekiq/redis_client_adapter.rb +115 -0
  40. data/lib/sidekiq/redis_connection.rb +13 -82
  41. data/lib/sidekiq/ring_buffer.rb +29 -0
  42. data/lib/sidekiq/scheduled.rb +75 -37
  43. data/lib/sidekiq/testing/inline.rb +4 -4
  44. data/lib/sidekiq/testing.rb +41 -68
  45. data/lib/sidekiq/transaction_aware_client.rb +44 -0
  46. data/lib/sidekiq/version.rb +2 -1
  47. data/lib/sidekiq/web/action.rb +3 -3
  48. data/lib/sidekiq/web/application.rb +45 -11
  49. data/lib/sidekiq/web/csrf_protection.rb +3 -3
  50. data/lib/sidekiq/web/helpers.rb +35 -21
  51. data/lib/sidekiq/web.rb +10 -17
  52. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  53. data/lib/sidekiq.rb +85 -202
  54. data/sidekiq.gemspec +20 -10
  55. data/web/assets/javascripts/application.js +76 -26
  56. data/web/assets/javascripts/base-charts.js +106 -0
  57. data/web/assets/javascripts/chart.min.js +13 -0
  58. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  59. data/web/assets/javascripts/dashboard-charts.js +166 -0
  60. data/web/assets/javascripts/dashboard.js +3 -240
  61. data/web/assets/javascripts/metrics.js +264 -0
  62. data/web/assets/stylesheets/application-dark.css +17 -17
  63. data/web/assets/stylesheets/application-rtl.css +2 -91
  64. data/web/assets/stylesheets/application.css +69 -302
  65. data/web/locales/ar.yml +70 -70
  66. data/web/locales/cs.yml +62 -62
  67. data/web/locales/da.yml +60 -53
  68. data/web/locales/de.yml +65 -65
  69. data/web/locales/el.yml +43 -24
  70. data/web/locales/en.yml +82 -69
  71. data/web/locales/es.yml +68 -68
  72. data/web/locales/fa.yml +65 -65
  73. data/web/locales/fr.yml +67 -67
  74. data/web/locales/he.yml +65 -64
  75. data/web/locales/hi.yml +59 -59
  76. data/web/locales/it.yml +53 -53
  77. data/web/locales/ja.yml +73 -68
  78. data/web/locales/ko.yml +52 -52
  79. data/web/locales/lt.yml +66 -66
  80. data/web/locales/nb.yml +61 -61
  81. data/web/locales/nl.yml +52 -52
  82. data/web/locales/pl.yml +45 -45
  83. data/web/locales/pt-br.yml +63 -55
  84. data/web/locales/pt.yml +51 -51
  85. data/web/locales/ru.yml +67 -66
  86. data/web/locales/sv.yml +53 -53
  87. data/web/locales/ta.yml +60 -60
  88. data/web/locales/uk.yml +62 -61
  89. data/web/locales/ur.yml +64 -64
  90. data/web/locales/vi.yml +67 -67
  91. data/web/locales/zh-cn.yml +43 -16
  92. data/web/locales/zh-tw.yml +42 -8
  93. data/web/views/_footer.erb +5 -2
  94. data/web/views/_job_info.erb +18 -2
  95. data/web/views/_metrics_period_select.erb +12 -0
  96. data/web/views/_nav.erb +1 -1
  97. data/web/views/_paging.erb +2 -0
  98. data/web/views/_poll_link.erb +1 -1
  99. data/web/views/_summary.erb +1 -1
  100. data/web/views/busy.erb +42 -26
  101. data/web/views/dashboard.erb +36 -4
  102. data/web/views/metrics.erb +82 -0
  103. data/web/views/metrics_for_job.erb +71 -0
  104. data/web/views/morgue.erb +5 -9
  105. data/web/views/queue.erb +15 -15
  106. data/web/views/queues.erb +3 -1
  107. data/web/views/retries.erb +5 -9
  108. data/web/views/scheduled.erb +12 -13
  109. metadata +68 -32
  110. data/LICENSE +0 -9
  111. data/lib/generators/sidekiq/worker_generator.rb +0 -57
  112. data/lib/sidekiq/delay.rb +0 -41
  113. data/lib/sidekiq/exception_handler.rb +0 -27
  114. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  115. data/lib/sidekiq/extensions/active_record.rb +0 -43
  116. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  117. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  118. data/lib/sidekiq/worker.rb +0 -311
@@ -21,7 +21,7 @@ body {
21
21
  a {
22
22
  color: #b1003e;
23
23
  }
24
- a:active, a:hover {
24
+ a:active, a:hover, a:focus {
25
25
  color: #4b001a;
26
26
  }
27
27
 
@@ -67,10 +67,17 @@ body {
67
67
  padding: 0 20px;
68
68
  }
69
69
 
70
- h3 {
70
+ h1, h2, h3 {
71
+ font-size: 24px;
71
72
  line-height: 45px;
72
73
  }
73
74
 
75
+ .header-container, .header-container .page-title-container {
76
+ display: flex;
77
+ justify-content: space-between;
78
+ align-items: center;
79
+ }
80
+
74
81
  .centered {
75
82
  text-align: center;
76
83
  }
@@ -89,11 +96,10 @@ header.row .pagination {
89
96
  .summary_bar .summary {
90
97
  margin-top: 12px;
91
98
  background-color: #fff;
92
- box-shadow: 0 0 5px rgba(50, 50, 50, 0.25);
93
99
  border-radius: 4px;
100
+ border: 1px solid rgba(0, 0, 0, 0.1);
94
101
  padding: 8px;
95
102
  margin-bottom: 10px;
96
- border-width: 0;
97
103
  }
98
104
  .poll-wrapper {
99
105
  margin: 9px;
@@ -203,6 +209,7 @@ table .table-checkbox label {
203
209
 
204
210
  .navbar .navbar-brand .status {
205
211
  color: #585454;
212
+ display: inline;
206
213
  }
207
214
 
208
215
 
@@ -350,6 +357,7 @@ img.smallogo {
350
357
  text-align: center;
351
358
  margin-right: 20px;
352
359
  border: 1px solid rgba(0, 0, 0, 0.1);
360
+ border-radius: 4px;
353
361
  padding: 5px;
354
362
  width: 150px;
355
363
  margin-bottom: 20px;
@@ -405,57 +413,31 @@ span.current-interval {
405
413
 
406
414
  div.interval-slider input {
407
415
  width: 160px;
408
- height: 3px;
409
- margin-top: 5px;
410
416
  border-radius: 2px;
411
417
  background: currentcolor;
412
418
  }
413
419
 
414
- #realtime-legend,
415
- #history-legend {
416
- width: 580px;
417
- text-align: left;
418
- margin-top: 5px;
419
- float: right;
420
- }
421
- #realtime-legend .timestamp,
422
- #history-legend .timestamp {
423
- display: inline-block;
424
- width: 220px;
425
- text-align: right;
420
+ #realtime-legend {
421
+ margin-top: -20px;
422
+ padding-left: 30px;
423
+ display: flex;
424
+ justify-content: end;
425
+ align-items: center;
426
426
  }
427
- #realtime-legend .line,
428
- #history-legend .line {
429
- display: inline-block;
430
- margin: 0 0 0 20px;
427
+ #realtime-legend > * {
428
+ min-width: 14rem;
431
429
  }
432
- #realtime-legend .swatch,
433
- #history-legend .swatch {
430
+ #realtime-legend .swatch {
434
431
  display: inline-block;
435
432
  width: 10px;
436
433
  height: 10px;
437
- margin: 0 8px 0 0;
438
- }
439
- #realtime-legend .tag,
440
- #history-legend .tag {
441
- display: inline-block;
434
+ margin: 0 5px;
442
435
  }
443
-
444
- @media (max-width: 790px) {
445
- #realtime-legend,
446
- #history-legend {
447
- float: none;
448
- width: 100%;
449
- margin-bottom: 20px;
450
- }
436
+ #realtime-legend .time {
437
+ min-width: auto;
438
+ text-align: right;
451
439
  }
452
440
 
453
- @media (max-width: 500px) {
454
- #realtime-legend,
455
- #history-legend {
456
- text-align: center;
457
- }
458
- }
459
441
  /* Beacon
460
442
  ********************************** */
461
443
 
@@ -615,247 +597,6 @@ div.interval-slider input {
615
597
  }
616
598
  }
617
599
 
618
- .rickshaw_graph .detail {
619
- pointer-events: none;
620
- position: absolute;
621
- top: 0;
622
- z-index: 2;
623
- background: rgba(0, 0, 0, .9);
624
- bottom: 0;
625
- width: 1px;
626
- transition: opacity .25s linear;
627
- }
628
- .rickshaw_graph .detail.inactive {
629
- opacity: 0
630
- }
631
- .rickshaw_graph .detail .item.active {
632
- opacity: 1
633
- }
634
- .rickshaw_graph .detail .x_label {
635
- font-family: Arial, sans-serif;
636
- border-radius: 3px;
637
- padding: 6px;
638
- opacity: .7;
639
- border: 1px solid #e0e0e0;
640
- font-size: 12px;
641
- position: absolute;
642
- background: #fff;
643
- white-space: nowrap
644
- }
645
- .rickshaw_graph .detail .x_label.left {
646
- left: 0
647
- }
648
- .rickshaw_graph .detail .x_label.right {
649
- right: 0
650
- }
651
- .rickshaw_graph .detail .item {
652
- position: absolute;
653
- z-index: 2;
654
- border-radius: 3px;
655
- padding: .25em;
656
- font-size: 12px;
657
- font-family: Arial, sans-serif;
658
- opacity: 0;
659
- background: rgba(0, 0, 0, .4);
660
- color: #fff;
661
- border: 1px solid rgba(0, 0, 0, .4);
662
- margin-left: 1em;
663
- margin-right: 1em;
664
- margin-top: -1em;
665
- white-space: nowrap
666
- }
667
- .rickshaw_graph .detail .item.left {
668
- left: 0
669
- }
670
- .rickshaw_graph .detail .item.right {
671
- right: 0
672
- }
673
- .rickshaw_graph .detail .item.active {
674
- opacity: 1;
675
- background: rgba(0, 0, 0, .8)
676
- }
677
- .rickshaw_graph .detail .item:after {
678
- position: absolute;
679
- display: block;
680
- width: 0;
681
- height: 0;
682
- content: "";
683
- border: 5px solid transparent
684
- }
685
- .rickshaw_graph .detail .item.left:after {
686
- top: 1em;
687
- left: -5px;
688
- margin-top: -5px;
689
- border-right-color: rgba(0, 0, 0, .8);
690
- border-left-width: 0
691
- }
692
- .rickshaw_graph .detail .item.right:after {
693
- top: 1em;
694
- right: -5px;
695
- margin-top: -5px;
696
- border-left-color: rgba(0, 0, 0, .8);
697
- border-right-width: 0
698
- }
699
- .rickshaw_graph .detail .dot {
700
- width: 4px;
701
- height: 4px;
702
- margin-left: -3px;
703
- margin-top: -3.5px;
704
- border-radius: 5px;
705
- position: absolute;
706
- box-shadow: 0 0 2px rgba(0, 0, 0, .6);
707
- box-sizing: content-box;
708
- background: #fff;
709
- border-width: 2px;
710
- border-style: solid;
711
- display: none;
712
- background-clip: padding-box
713
- }
714
- .rickshaw_graph .detail .dot.active {
715
- display: block
716
- }
717
- .rickshaw_graph {
718
- position: relative
719
- }
720
- .rickshaw_graph svg {
721
- display: block;
722
- overflow: hidden
723
- }
724
- .rickshaw_graph .x_tick {
725
- position: absolute;
726
- top: 0;
727
- bottom: 0;
728
- width: 0;
729
- border-left: 1px dotted rgba(0, 0, 0, .5);
730
- pointer-events: none
731
- }
732
- .rickshaw_graph .x_tick .title {
733
- position: absolute;
734
- font-family: Arial, sans-serif;
735
- white-space: nowrap;
736
- margin-left: 3px;
737
- bottom: 1px
738
- }
739
- .rickshaw_graph .y_axis,
740
- .rickshaw_graph .x_axis_d3 {
741
- fill: none
742
- }
743
- .rickshaw_graph .y_ticks .tick line,
744
- .rickshaw_graph .x_ticks_d3 .tick {
745
- stroke: rgba(0, 0, 0, .16);
746
- stroke-width: 2px;
747
- shape-rendering: crisp-edges;
748
- pointer-events: none
749
- }
750
- .rickshaw_graph .y_grid .tick,
751
- .rickshaw_graph .x_grid_d3 .tick {
752
- z-index: -1;
753
- stroke: rgba(0, 0, 0, .2);
754
- stroke-width: 1px;
755
- stroke-dasharray: 1 1
756
- }
757
- .rickshaw_graph .y_grid .tick[data-y-value="0"] {
758
- stroke-dasharray: 1 0
759
- }
760
- .rickshaw_graph .y_grid path,
761
- .rickshaw_graph .x_grid_d3 path {
762
- fill: none;
763
- stroke: none
764
- }
765
- .rickshaw_graph .y_ticks path,
766
- .rickshaw_graph .x_ticks_d3 path {
767
- fill: none;
768
- stroke: gray
769
- }
770
- .rickshaw_graph .y_ticks text,
771
- .rickshaw_graph .x_ticks_d3 text {
772
- opacity: .7;
773
- font-size: 12px;
774
- pointer-events: none
775
- }
776
- .rickshaw_graph .x_tick.glow .title,
777
- .rickshaw_graph .y_ticks.glow text {
778
- fill: #000;
779
- color: #000;
780
- text-shadow: -1px 1px 0 rgba(255, 255, 255, .1), 1px -1px 0 rgba(255, 255, 255, .1), 1px 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1), 0 -1px 0 rgba(255, 255, 255, .1), 1px 0 0 rgba(255, 255, 255, .1), -1px 0 0 rgba(255, 255, 255, .1), -1px -1px 0 rgba(255, 255, 255, .1)
781
- }
782
- .rickshaw_graph .x_tick.inverse .title,
783
- .rickshaw_graph .y_ticks.inverse text {
784
- fill: #fff;
785
- color: #fff;
786
- text-shadow: -1px 1px 0 rgba(0, 0, 0, .8), 1px -1px 0 rgba(0, 0, 0, .8), 1px 1px 0 rgba(0, 0, 0, .8), 0 1px 0 rgba(0, 0, 0, .8), 0 -1px 0 rgba(0, 0, 0, .8), 1px 0 0 rgba(0, 0, 0, .8), -1px 0 0 rgba(0, 0, 0, .8), -1px -1px 0 rgba(0, 0, 0, .8)
787
- }
788
- .rickshaw_legend {
789
- font-family: Arial;
790
- color: #fff;
791
- background: #404040;
792
- display: inline-block;
793
- padding: 12px 5px;
794
- border-radius: 2px;
795
- position: relative
796
- }
797
- .rickshaw_legend:hover {
798
- z-index: 10
799
- }
800
- .rickshaw_legend .swatch {
801
- width: 10px;
802
- height: 10px;
803
- border: 1px solid rgba(0, 0, 0, .2)
804
- }
805
- .rickshaw_legend .line {
806
- clear: both;
807
- line-height: 140%;
808
- padding-right: 15px
809
- }
810
- .rickshaw_legend .line .swatch {
811
- display: inline-block;
812
- margin-right: 3px;
813
- border-radius: 2px
814
- }
815
- .rickshaw_legend .label {
816
- margin: 0;
817
- white-space: nowrap;
818
- display: inline;
819
- font-size: inherit;
820
- background-color: transparent;
821
- color: inherit;
822
- font-weight: 400;
823
- line-height: normal;
824
- padding: 0;
825
- text-shadow: none
826
- }
827
- .rickshaw_legend .action:hover {
828
- opacity: .6
829
- }
830
- .rickshaw_legend .action {
831
- margin-right: .2em;
832
- opacity: .5;
833
- cursor: pointer;
834
- }
835
- .rickshaw_legend .line.disabled {
836
- opacity: .4
837
- }
838
- .rickshaw_legend ul {
839
- list-style-type: none;
840
- margin: 0;
841
- padding: 0;
842
- margin: 2px;
843
- cursor: pointer
844
- }
845
- .rickshaw_legend li {
846
- padding: 0 0 0 2px;
847
- min-width: 80px;
848
- white-space: nowrap
849
- }
850
- .rickshaw_legend li:hover {
851
- background: rgba(255, 255, 255, .08);
852
- border-radius: 3px
853
- }
854
- .rickshaw_legend li:active {
855
- background: rgba(255, 255, 255, .2);
856
- border-radius: 3px
857
- }
858
-
859
600
  .code-wrap {
860
601
  white-space: normal;
861
602
  }
@@ -883,37 +624,25 @@ div.interval-slider input {
883
624
  }
884
625
  }
885
626
 
886
- .redis-url, .redis-namespace {
627
+ .redis-url {
887
628
  overflow: hidden;
888
629
  white-space: nowrap;
889
630
  }
890
631
 
891
632
  @media (min-width: 768px) {
892
633
  .redis-url {
893
- max-width: 200px;
894
- }
895
-
896
- .redis-namespace {
897
- max-width: 150px;
634
+ max-width: 250px;
898
635
  }
899
636
  }
900
637
 
901
638
  @media (min-width: 992px) {
902
639
  .redis-url {
903
- max-width: 390px;
904
- }
905
-
906
- .redis-namespace {
907
- max-width: 300px;
640
+ max-width: 490px;
908
641
  }
909
642
  }
910
643
  @media (min-width: 1200px) {
911
644
  .redis-url {
912
- max-width: 480px;
913
- }
914
-
915
- .redis-namespace {
916
- max-width: 350px;
645
+ max-width: 600px;
917
646
  }
918
647
  }
919
648
 
@@ -947,11 +676,49 @@ div.interval-slider input {
947
676
  }
948
677
 
949
678
  .info-circle {
950
- color: #ccc;
951
- background-color: #000;
679
+ color: #333;
680
+ background-color: #ccc;
952
681
  border-radius: 50%;
953
682
  text-align: center;
954
683
  vertical-align: middle;
955
684
  padding: 3px 7px;
956
685
  margin-left: 5px;
957
686
  }
687
+
688
+ .metrics-swatch-wrapper {
689
+ display: flex;
690
+ align-items: center;
691
+ gap: 6px;
692
+ }
693
+
694
+ .metrics-swatch[type=checkbox] {
695
+ display: inline-block;
696
+ width: 16px;
697
+ height: 16px;
698
+ margin: 0;
699
+ border-radius: 2px;
700
+ appearance: none;
701
+ -webkit-appearance: none;
702
+ -moz-appearance: none;
703
+ border: 1px solid #bbb;
704
+ color: white;
705
+ background-color: currentColor;
706
+ }
707
+
708
+ /* We need to add the checkmark since we've taken over the appearance */
709
+ .metrics-swatch[type=checkbox]:checked {
710
+ border-color: currentColor;
711
+ background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
712
+ background-size: 100% 100%;
713
+ background-position: center;
714
+ background-repeat: no-repeat;
715
+ }
716
+
717
+ .metrics-swatch[type=checkbox]:focus {
718
+ outline: 1px solid #888;
719
+ outline-offset: 2px;
720
+ }
721
+
722
+ canvas {
723
+ margin: 20px 0 30px;
724
+ }
data/web/locales/ar.yml CHANGED
@@ -1,87 +1,87 @@
1
1
  # elements like %{queue} are variables and should not be translated
2
2
  ar:
3
- TextDirection: 'rtl'
4
- Dashboard: لوحة التحكم
5
- Status: حالة
6
- Time: وقت
7
- Namespace: مساحة الاسم
8
- Realtime: الزمن الفعلي
9
- History: تاريخ
10
- Busy: مشغول
11
- Utilization: الاستخدام
12
- Processed: تمت المعالجة
13
- Failed: فشل
14
- Scheduled: مجدول
15
- Retries: إعادة محاولة
16
- Enqueued: في الرتل
17
- Worker: عامل
18
- LivePoll: استعلام مباشر
19
- StopPolling: إيقاف الاستعلامات
20
- Queue: رتل
21
- Class: نوع
22
- Job: وظيفة
23
- Arguments: مدخلات
24
- Extras: إضافات
25
- Started: بدأت
26
- ShowAll: عرض الكل
27
- CurrentMessagesInQueue: الرسائل الحالية في الرتل <span class='title'>%{queue}</span>
3
+ Actions: إجراءات
28
4
  AddToQueue: إضافة إلى الرتل
5
+ AreYouSure: هل انت متأكد؟
29
6
  AreYouSureDeleteJob: هل أنت متأكد من حذف الوظيفة؟
30
7
  AreYouSureDeleteQueue: هل أنت متأكد من حذف الرتل %{queue}؟
8
+ Arguments: مدخلات
9
+ BackToApp: العودة إلى التطبيق
10
+ Busy: مشغول
11
+ Class: نوع
12
+ Connections: اتصالات
13
+ CreatedAt: أنشئت في
14
+ CurrentMessagesInQueue: الرسائل الحالية في الرتل <span class='title'>%{queue}</span>
15
+ Dashboard: لوحة التحكم
16
+ Dead: ميتة
17
+ DeadJobs: وظائف ميتة
31
18
  Delete: حذف
32
- Queues: أرتال
33
- Size: حجم
34
- Actions: إجراءات
35
- NextRetry: إعادة المحاولة القادمة
36
- RetryCount: عدد مرات إعادة المحاولة
37
- RetryNow: إعادة المحاولة الآن
38
- Kill: إبطال
39
- LastRetry: إعادة المحاولة الأخيرة
40
- OriginallyFailed: فشل أصلا
41
- AreYouSure: هل انت متأكد؟
42
19
  DeleteAll: حذف الكل
43
- RetryAll: إعادة المحاولة للكل
44
- KillAll: إبطال الكل
45
- NoRetriesFound: لاتوجد أي إعادة محاولة
20
+ Enqueued: في الرتل
46
21
  Error: خطأ
22
+ ErrorBacktrace: تتبع الخطأ
47
23
  ErrorClass: نوع الخطأ
48
24
  ErrorMessage: رسالة الخطأ
49
- ErrorBacktrace: تتبع الخطأ
25
+ Extras: إضافات
26
+ Failed: فشل
27
+ Failures: فشل
50
28
  GoBack: إلى الخلف
51
- NoScheduledFound: لايوجد وظائف مجدولة
52
- When: متى
53
- ScheduledJobs: وظائف مجدولة
54
- idle: خامل
55
- active: نشيط
56
- Version: إصدار
57
- Connections: اتصالات
29
+ History: تاريخ
30
+ Job: وظيفة
31
+ Jobs: وظائف
32
+ Kill: إبطال
33
+ KillAll: إبطال الكل
34
+ LastRetry: إعادة المحاولة الأخيرة
35
+ Latency: زمن الانتظار
36
+ LivePoll: استعلام مباشر
58
37
  MemoryUsage: استخدام الذاكرة
59
- PeakMemoryUsage: ذروة استخدام الذاكرة
60
- Uptime: زمن العمل
61
- OneWeek: أسبوع
62
- OneMonth: شهر
63
- ThreeMonths: ثلاثة أشهر
64
- SixMonths: ستة أشهر
65
- Failures: فشل
66
- DeadJobs: وظائف ميتة
38
+ Name: الاسم
39
+ Namespace: مساحة الاسم
40
+ NextRetry: إعادة المحاولة القادمة
67
41
  NoDeadJobsFound: لاتوجد وظائف ميتة
68
- Dead: ميتة
42
+ NoRetriesFound: لاتوجد أي إعادة محاولة
43
+ NoScheduledFound: لايوجد وظائف مجدولة
44
+ NotYetEnqueued: لم تدخل الرتل بعد
45
+ OneMonth: شهر
46
+ OneWeek: أسبوع
47
+ OriginallyFailed: فشل أصلا
48
+ Pause: إيقاف مؤقت
49
+ Paused: موقفة مؤقتاً
50
+ PeakMemoryUsage: ذروة استخدام الذاكرة
51
+ Plugins: الإضافات
52
+ PollingInterval: الفاصل الزمني بين الاستعلامات
69
53
  Process: عملية
54
+ Processed: تمت المعالجة
70
55
  Processes: عمليات
71
- Name: الاسم
72
- Thread: نيسب
73
- Threads: نياسب
74
- Jobs: وظائف
75
- Paused: موقفة مؤقتاً
76
- Stop: إيقاف
56
+ Queue: رتل
57
+ Queues: أرتال
77
58
  Quiet: هدوء
78
- StopAll: إيقاف الكل
79
59
  QuietAll: هدوء الكل
80
- PollingInterval: الفاصل الزمني بين الاستعلامات
81
- Plugins: الإضافات
82
- NotYetEnqueued: لم تدخل الرتل بعد
83
- CreatedAt: أنشئت في
84
- BackToApp: العودة إلى التطبيق
85
- Latency: زمن الانتظار
86
- Pause: إيقاف مؤقت
87
- Unpause: متابعة
60
+ Realtime: الزمن الفعلي
61
+ Retries: إعادة محاولة
62
+ RetryAll: إعادة المحاولة للكل
63
+ RetryCount: عدد مرات إعادة المحاولة
64
+ RetryNow: إعادة المحاولة الآن
65
+ Scheduled: مجدول
66
+ ScheduledJobs: وظائف مجدولة
67
+ ShowAll: عرض الكل
68
+ SixMonths: ستة أشهر
69
+ Size: حجم
70
+ Started: بدأت
71
+ Status: حالة
72
+ Stop: إيقاف
73
+ StopAll: إيقاف الكل
74
+ StopPolling: إيقاف الاستعلامات
75
+ TextDirection: 'rtl'
76
+ Thread: نيسب
77
+ Threads: نياسب
78
+ ThreeMonths: ثلاثة أشهر
79
+ Time: وقت
80
+ Unpause: متابعة
81
+ Uptime: زمن العمل
82
+ Utilization: الاستخدام
83
+ Version: إصدار
84
+ When: متى
85
+ Worker: عامل
86
+ active: نشيط
87
+ idle: خامل