sidekiq 6.5.1 → 7.0.9

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.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +142 -12
  3. data/README.md +40 -32
  4. data/bin/sidekiq +3 -8
  5. data/bin/sidekiqload +186 -118
  6. data/bin/sidekiqmon +3 -0
  7. data/lib/sidekiq/api.rb +226 -139
  8. data/lib/sidekiq/capsule.rb +127 -0
  9. data/lib/sidekiq/cli.rb +55 -61
  10. data/lib/sidekiq/client.rb +31 -18
  11. data/lib/sidekiq/component.rb +5 -1
  12. data/lib/sidekiq/config.rb +270 -0
  13. data/lib/sidekiq/deploy.rb +62 -0
  14. data/lib/sidekiq/embedded.rb +61 -0
  15. data/lib/sidekiq/fetch.rb +11 -14
  16. data/lib/sidekiq/job.rb +375 -10
  17. data/lib/sidekiq/job_logger.rb +2 -2
  18. data/lib/sidekiq/job_retry.rb +62 -41
  19. data/lib/sidekiq/job_util.rb +48 -14
  20. data/lib/sidekiq/launcher.rb +71 -65
  21. data/lib/sidekiq/logger.rb +1 -26
  22. data/lib/sidekiq/manager.rb +9 -11
  23. data/lib/sidekiq/metrics/query.rb +153 -0
  24. data/lib/sidekiq/metrics/shared.rb +95 -0
  25. data/lib/sidekiq/metrics/tracking.rb +136 -0
  26. data/lib/sidekiq/middleware/chain.rb +84 -48
  27. data/lib/sidekiq/middleware/current_attributes.rb +12 -17
  28. data/lib/sidekiq/monitor.rb +17 -4
  29. data/lib/sidekiq/paginator.rb +9 -1
  30. data/lib/sidekiq/processor.rb +27 -27
  31. data/lib/sidekiq/rails.rb +4 -9
  32. data/lib/sidekiq/redis_client_adapter.rb +8 -47
  33. data/lib/sidekiq/redis_connection.rb +11 -113
  34. data/lib/sidekiq/scheduled.rb +60 -33
  35. data/lib/sidekiq/testing.rb +5 -33
  36. data/lib/sidekiq/transaction_aware_client.rb +4 -5
  37. data/lib/sidekiq/version.rb +2 -1
  38. data/lib/sidekiq/web/action.rb +3 -3
  39. data/lib/sidekiq/web/application.rb +40 -9
  40. data/lib/sidekiq/web/csrf_protection.rb +1 -1
  41. data/lib/sidekiq/web/helpers.rb +32 -18
  42. data/lib/sidekiq/web.rb +7 -14
  43. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  44. data/lib/sidekiq.rb +76 -266
  45. data/sidekiq.gemspec +21 -10
  46. data/web/assets/javascripts/application.js +19 -1
  47. data/web/assets/javascripts/base-charts.js +106 -0
  48. data/web/assets/javascripts/chart.min.js +13 -0
  49. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  50. data/web/assets/javascripts/dashboard-charts.js +166 -0
  51. data/web/assets/javascripts/dashboard.js +3 -240
  52. data/web/assets/javascripts/metrics.js +264 -0
  53. data/web/assets/stylesheets/application-dark.css +4 -0
  54. data/web/assets/stylesheets/application-rtl.css +2 -91
  55. data/web/assets/stylesheets/application.css +65 -297
  56. data/web/locales/ar.yml +70 -70
  57. data/web/locales/cs.yml +62 -62
  58. data/web/locales/da.yml +60 -53
  59. data/web/locales/de.yml +65 -65
  60. data/web/locales/el.yml +43 -24
  61. data/web/locales/en.yml +82 -69
  62. data/web/locales/es.yml +68 -68
  63. data/web/locales/fa.yml +65 -65
  64. data/web/locales/fr.yml +67 -67
  65. data/web/locales/gd.yml +99 -0
  66. data/web/locales/he.yml +65 -64
  67. data/web/locales/hi.yml +59 -59
  68. data/web/locales/it.yml +53 -53
  69. data/web/locales/ja.yml +73 -68
  70. data/web/locales/ko.yml +52 -52
  71. data/web/locales/lt.yml +66 -66
  72. data/web/locales/nb.yml +61 -61
  73. data/web/locales/nl.yml +52 -52
  74. data/web/locales/pl.yml +45 -45
  75. data/web/locales/pt-br.yml +59 -69
  76. data/web/locales/pt.yml +51 -51
  77. data/web/locales/ru.yml +67 -66
  78. data/web/locales/sv.yml +53 -53
  79. data/web/locales/ta.yml +60 -60
  80. data/web/locales/uk.yml +62 -61
  81. data/web/locales/ur.yml +64 -64
  82. data/web/locales/vi.yml +67 -67
  83. data/web/locales/zh-cn.yml +43 -16
  84. data/web/locales/zh-tw.yml +42 -8
  85. data/web/views/_footer.erb +5 -2
  86. data/web/views/_job_info.erb +18 -2
  87. data/web/views/_metrics_period_select.erb +12 -0
  88. data/web/views/_nav.erb +1 -1
  89. data/web/views/_paging.erb +2 -0
  90. data/web/views/_poll_link.erb +1 -1
  91. data/web/views/busy.erb +43 -27
  92. data/web/views/dashboard.erb +36 -4
  93. data/web/views/metrics.erb +82 -0
  94. data/web/views/metrics_for_job.erb +68 -0
  95. data/web/views/morgue.erb +5 -9
  96. data/web/views/queue.erb +15 -15
  97. data/web/views/queues.erb +3 -1
  98. data/web/views/retries.erb +5 -9
  99. data/web/views/scheduled.erb +12 -13
  100. metadata +60 -27
  101. data/lib/sidekiq/.DS_Store +0 -0
  102. data/lib/sidekiq/delay.rb +0 -43
  103. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  104. data/lib/sidekiq/extensions/active_record.rb +0 -43
  105. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  106. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  107. data/lib/sidekiq/worker.rb +0 -367
  108. /data/{LICENSE → LICENSE.txt} +0 -0
@@ -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
  }
@@ -410,51 +417,27 @@ div.interval-slider input {
410
417
  background: currentcolor;
411
418
  }
412
419
 
413
- #realtime-legend,
414
- #history-legend {
415
- width: 580px;
416
- text-align: left;
417
- margin-top: 5px;
418
- float: right;
419
- }
420
- #realtime-legend .timestamp,
421
- #history-legend .timestamp {
422
- display: inline-block;
423
- width: 220px;
424
- 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;
425
426
  }
426
- #realtime-legend .line,
427
- #history-legend .line {
428
- display: inline-block;
429
- margin: 0 0 0 20px;
427
+ #realtime-legend > * {
428
+ min-width: 14rem;
430
429
  }
431
- #realtime-legend .swatch,
432
- #history-legend .swatch {
430
+ #realtime-legend .swatch {
433
431
  display: inline-block;
434
432
  width: 10px;
435
433
  height: 10px;
436
- margin: 0 8px 0 0;
434
+ margin: 0 5px;
437
435
  }
438
- #realtime-legend .tag,
439
- #history-legend .tag {
440
- display: inline-block;
441
- }
442
-
443
- @media (max-width: 790px) {
444
- #realtime-legend,
445
- #history-legend {
446
- float: none;
447
- width: 100%;
448
- margin-bottom: 20px;
449
- }
436
+ #realtime-legend .time {
437
+ min-width: auto;
438
+ text-align: right;
450
439
  }
451
440
 
452
- @media (max-width: 500px) {
453
- #realtime-legend,
454
- #history-legend {
455
- text-align: center;
456
- }
457
- }
458
441
  /* Beacon
459
442
  ********************************** */
460
443
 
@@ -614,247 +597,6 @@ div.interval-slider input {
614
597
  }
615
598
  }
616
599
 
617
- .rickshaw_graph .detail {
618
- pointer-events: none;
619
- position: absolute;
620
- top: 0;
621
- z-index: 2;
622
- background: rgba(0, 0, 0, .9);
623
- bottom: 0;
624
- width: 1px;
625
- transition: opacity .25s linear;
626
- }
627
- .rickshaw_graph .detail.inactive {
628
- opacity: 0
629
- }
630
- .rickshaw_graph .detail .item.active {
631
- opacity: 1
632
- }
633
- .rickshaw_graph .detail .x_label {
634
- font-family: Arial, sans-serif;
635
- border-radius: 3px;
636
- padding: 6px;
637
- opacity: .7;
638
- border: 1px solid #e0e0e0;
639
- font-size: 12px;
640
- position: absolute;
641
- background: #fff;
642
- white-space: nowrap
643
- }
644
- .rickshaw_graph .detail .x_label.left {
645
- left: 0
646
- }
647
- .rickshaw_graph .detail .x_label.right {
648
- right: 0
649
- }
650
- .rickshaw_graph .detail .item {
651
- position: absolute;
652
- z-index: 2;
653
- border-radius: 3px;
654
- padding: .25em;
655
- font-size: 12px;
656
- font-family: Arial, sans-serif;
657
- opacity: 0;
658
- background: rgba(0, 0, 0, .4);
659
- color: #fff;
660
- border: 1px solid rgba(0, 0, 0, .4);
661
- margin-left: 1em;
662
- margin-right: 1em;
663
- margin-top: -1em;
664
- white-space: nowrap
665
- }
666
- .rickshaw_graph .detail .item.left {
667
- left: 0
668
- }
669
- .rickshaw_graph .detail .item.right {
670
- right: 0
671
- }
672
- .rickshaw_graph .detail .item.active {
673
- opacity: 1;
674
- background: rgba(0, 0, 0, .8)
675
- }
676
- .rickshaw_graph .detail .item:after {
677
- position: absolute;
678
- display: block;
679
- width: 0;
680
- height: 0;
681
- content: "";
682
- border: 5px solid transparent
683
- }
684
- .rickshaw_graph .detail .item.left:after {
685
- top: 1em;
686
- left: -5px;
687
- margin-top: -5px;
688
- border-right-color: rgba(0, 0, 0, .8);
689
- border-left-width: 0
690
- }
691
- .rickshaw_graph .detail .item.right:after {
692
- top: 1em;
693
- right: -5px;
694
- margin-top: -5px;
695
- border-left-color: rgba(0, 0, 0, .8);
696
- border-right-width: 0
697
- }
698
- .rickshaw_graph .detail .dot {
699
- width: 4px;
700
- height: 4px;
701
- margin-left: -3px;
702
- margin-top: -3.5px;
703
- border-radius: 5px;
704
- position: absolute;
705
- box-shadow: 0 0 2px rgba(0, 0, 0, .6);
706
- box-sizing: content-box;
707
- background: #fff;
708
- border-width: 2px;
709
- border-style: solid;
710
- display: none;
711
- background-clip: padding-box
712
- }
713
- .rickshaw_graph .detail .dot.active {
714
- display: block
715
- }
716
- .rickshaw_graph {
717
- position: relative
718
- }
719
- .rickshaw_graph svg {
720
- display: block;
721
- overflow: hidden
722
- }
723
- .rickshaw_graph .x_tick {
724
- position: absolute;
725
- top: 0;
726
- bottom: 0;
727
- width: 0;
728
- border-left: 1px dotted rgba(0, 0, 0, .5);
729
- pointer-events: none
730
- }
731
- .rickshaw_graph .x_tick .title {
732
- position: absolute;
733
- font-family: Arial, sans-serif;
734
- white-space: nowrap;
735
- margin-left: 3px;
736
- bottom: 1px
737
- }
738
- .rickshaw_graph .y_axis,
739
- .rickshaw_graph .x_axis_d3 {
740
- fill: none
741
- }
742
- .rickshaw_graph .y_ticks .tick line,
743
- .rickshaw_graph .x_ticks_d3 .tick {
744
- stroke: rgba(0, 0, 0, .16);
745
- stroke-width: 2px;
746
- shape-rendering: crisp-edges;
747
- pointer-events: none
748
- }
749
- .rickshaw_graph .y_grid .tick,
750
- .rickshaw_graph .x_grid_d3 .tick {
751
- z-index: -1;
752
- stroke: rgba(0, 0, 0, .2);
753
- stroke-width: 1px;
754
- stroke-dasharray: 1 1
755
- }
756
- .rickshaw_graph .y_grid .tick[data-y-value="0"] {
757
- stroke-dasharray: 1 0
758
- }
759
- .rickshaw_graph .y_grid path,
760
- .rickshaw_graph .x_grid_d3 path {
761
- fill: none;
762
- stroke: none
763
- }
764
- .rickshaw_graph .y_ticks path,
765
- .rickshaw_graph .x_ticks_d3 path {
766
- fill: none;
767
- stroke: gray
768
- }
769
- .rickshaw_graph .y_ticks text,
770
- .rickshaw_graph .x_ticks_d3 text {
771
- opacity: .7;
772
- font-size: 12px;
773
- pointer-events: none
774
- }
775
- .rickshaw_graph .x_tick.glow .title,
776
- .rickshaw_graph .y_ticks.glow text {
777
- fill: #000;
778
- color: #000;
779
- 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)
780
- }
781
- .rickshaw_graph .x_tick.inverse .title,
782
- .rickshaw_graph .y_ticks.inverse text {
783
- fill: #fff;
784
- color: #fff;
785
- 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)
786
- }
787
- .rickshaw_legend {
788
- font-family: Arial;
789
- color: #fff;
790
- background: #404040;
791
- display: inline-block;
792
- padding: 12px 5px;
793
- border-radius: 2px;
794
- position: relative
795
- }
796
- .rickshaw_legend:hover {
797
- z-index: 10
798
- }
799
- .rickshaw_legend .swatch {
800
- width: 10px;
801
- height: 10px;
802
- border: 1px solid rgba(0, 0, 0, .2)
803
- }
804
- .rickshaw_legend .line {
805
- clear: both;
806
- line-height: 140%;
807
- padding-right: 15px
808
- }
809
- .rickshaw_legend .line .swatch {
810
- display: inline-block;
811
- margin-right: 3px;
812
- border-radius: 2px
813
- }
814
- .rickshaw_legend .label {
815
- margin: 0;
816
- white-space: nowrap;
817
- display: inline;
818
- font-size: inherit;
819
- background-color: transparent;
820
- color: inherit;
821
- font-weight: 400;
822
- line-height: normal;
823
- padding: 0;
824
- text-shadow: none
825
- }
826
- .rickshaw_legend .action:hover {
827
- opacity: .6
828
- }
829
- .rickshaw_legend .action {
830
- margin-right: .2em;
831
- opacity: .5;
832
- cursor: pointer;
833
- }
834
- .rickshaw_legend .line.disabled {
835
- opacity: .4
836
- }
837
- .rickshaw_legend ul {
838
- list-style-type: none;
839
- margin: 0;
840
- padding: 0;
841
- margin: 2px;
842
- cursor: pointer
843
- }
844
- .rickshaw_legend li {
845
- padding: 0 0 0 2px;
846
- min-width: 80px;
847
- white-space: nowrap
848
- }
849
- .rickshaw_legend li:hover {
850
- background: rgba(255, 255, 255, .08);
851
- border-radius: 3px
852
- }
853
- .rickshaw_legend li:active {
854
- background: rgba(255, 255, 255, .2);
855
- border-radius: 3px
856
- }
857
-
858
600
  .code-wrap {
859
601
  white-space: normal;
860
602
  }
@@ -882,37 +624,25 @@ div.interval-slider input {
882
624
  }
883
625
  }
884
626
 
885
- .redis-url, .redis-namespace {
627
+ .redis-url {
886
628
  overflow: hidden;
887
629
  white-space: nowrap;
888
630
  }
889
631
 
890
632
  @media (min-width: 768px) {
891
633
  .redis-url {
892
- max-width: 200px;
893
- }
894
-
895
- .redis-namespace {
896
- max-width: 150px;
634
+ max-width: 250px;
897
635
  }
898
636
  }
899
637
 
900
638
  @media (min-width: 992px) {
901
639
  .redis-url {
902
- max-width: 390px;
903
- }
904
-
905
- .redis-namespace {
906
- max-width: 300px;
640
+ max-width: 490px;
907
641
  }
908
642
  }
909
643
  @media (min-width: 1200px) {
910
644
  .redis-url {
911
- max-width: 480px;
912
- }
913
-
914
- .redis-namespace {
915
- max-width: 350px;
645
+ max-width: 600px;
916
646
  }
917
647
  }
918
648
 
@@ -946,11 +676,49 @@ div.interval-slider input {
946
676
  }
947
677
 
948
678
  .info-circle {
949
- color: #ccc;
950
- background-color: #000;
679
+ color: #333;
680
+ background-color: #ccc;
951
681
  border-radius: 50%;
952
682
  text-align: center;
953
683
  vertical-align: middle;
954
684
  padding: 3px 7px;
955
685
  margin-left: 5px;
956
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: خامل