sidekiq 6.4.0 → 7.0.8

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