sidekiq 6.3.1 → 7.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +285 -11
  3. data/LICENSE.txt +9 -0
  4. data/README.md +47 -34
  5. data/bin/sidekiq +4 -9
  6. data/bin/sidekiqload +207 -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 +333 -190
  13. data/lib/sidekiq/capsule.rb +127 -0
  14. data/lib/sidekiq/cli.rb +86 -80
  15. data/lib/sidekiq/client.rb +104 -95
  16. data/lib/sidekiq/{util.rb → component.rb} +14 -41
  17. data/lib/sidekiq/config.rb +282 -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 +371 -10
  22. data/lib/sidekiq/job_logger.rb +16 -28
  23. data/lib/sidekiq/job_retry.rb +99 -58
  24. data/lib/sidekiq/job_util.rb +107 -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 +59 -16
  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 +81 -80
  38. data/lib/sidekiq/rails.rb +21 -14
  39. data/lib/sidekiq/redis_client_adapter.rb +95 -0
  40. data/lib/sidekiq/redis_connection.rb +14 -82
  41. data/lib/sidekiq/ring_buffer.rb +29 -0
  42. data/lib/sidekiq/scheduled.rb +76 -38
  43. data/lib/sidekiq/testing/inline.rb +4 -4
  44. data/lib/sidekiq/testing.rb +42 -69
  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 +95 -11
  49. data/lib/sidekiq/web/csrf_protection.rb +4 -4
  50. data/lib/sidekiq/web/helpers.rb +58 -30
  51. data/lib/sidekiq/web.rb +22 -17
  52. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  53. data/lib/sidekiq.rb +85 -202
  54. data/sidekiq.gemspec +12 -10
  55. data/web/assets/javascripts/application.js +77 -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 +168 -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 +84 -69
  71. data/web/locales/es.yml +68 -68
  72. data/web/locales/fa.yml +65 -65
  73. data/web/locales/fr.yml +81 -67
  74. data/web/locales/gd.yml +99 -0
  75. data/web/locales/he.yml +65 -64
  76. data/web/locales/hi.yml +59 -59
  77. data/web/locales/it.yml +53 -53
  78. data/web/locales/ja.yml +73 -68
  79. data/web/locales/ko.yml +52 -52
  80. data/web/locales/lt.yml +66 -66
  81. data/web/locales/nb.yml +61 -61
  82. data/web/locales/nl.yml +52 -52
  83. data/web/locales/pl.yml +45 -45
  84. data/web/locales/pt-br.yml +83 -55
  85. data/web/locales/pt.yml +51 -51
  86. data/web/locales/ru.yml +67 -66
  87. data/web/locales/sv.yml +53 -53
  88. data/web/locales/ta.yml +60 -60
  89. data/web/locales/uk.yml +62 -61
  90. data/web/locales/ur.yml +64 -64
  91. data/web/locales/vi.yml +67 -67
  92. data/web/locales/zh-cn.yml +43 -16
  93. data/web/locales/zh-tw.yml +42 -8
  94. data/web/views/_footer.erb +5 -2
  95. data/web/views/_job_info.erb +18 -2
  96. data/web/views/_metrics_period_select.erb +12 -0
  97. data/web/views/_nav.erb +1 -1
  98. data/web/views/_paging.erb +2 -0
  99. data/web/views/_poll_link.erb +1 -1
  100. data/web/views/_summary.erb +1 -1
  101. data/web/views/busy.erb +44 -28
  102. data/web/views/dashboard.erb +36 -4
  103. data/web/views/filtering.erb +7 -0
  104. data/web/views/metrics.erb +82 -0
  105. data/web/views/metrics_for_job.erb +68 -0
  106. data/web/views/morgue.erb +5 -9
  107. data/web/views/queue.erb +15 -15
  108. data/web/views/queues.erb +3 -1
  109. data/web/views/retries.erb +5 -9
  110. data/web/views/scheduled.erb +12 -13
  111. metadata +62 -31
  112. data/LICENSE +0 -9
  113. data/lib/generators/sidekiq/worker_generator.rb +0 -57
  114. data/lib/sidekiq/delay.rb +0 -41
  115. data/lib/sidekiq/exception_handler.rb +0 -27
  116. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  117. data/lib/sidekiq/extensions/active_record.rb +0 -43
  118. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  119. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  120. 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: خامل