sidekiq 6.4.1 → 7.2.1

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 (116) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +307 -12
  3. data/README.md +43 -35
  4. data/bin/multi_queue_bench +268 -0
  5. data/bin/sidekiq +3 -8
  6. data/bin/sidekiqload +206 -114
  7. data/bin/sidekiqmon +3 -0
  8. data/lib/sidekiq/api.rb +356 -167
  9. data/lib/sidekiq/capsule.rb +127 -0
  10. data/lib/sidekiq/cli.rb +85 -89
  11. data/lib/sidekiq/client.rb +87 -59
  12. data/lib/sidekiq/component.rb +68 -0
  13. data/lib/sidekiq/config.rb +287 -0
  14. data/lib/sidekiq/deploy.rb +62 -0
  15. data/lib/sidekiq/embedded.rb +61 -0
  16. data/lib/sidekiq/fetch.rb +21 -22
  17. data/lib/sidekiq/job.rb +371 -10
  18. data/lib/sidekiq/job_logger.rb +2 -2
  19. data/lib/sidekiq/job_retry.rb +97 -58
  20. data/lib/sidekiq/job_util.rb +62 -20
  21. data/lib/sidekiq/launcher.rb +91 -83
  22. data/lib/sidekiq/logger.rb +6 -45
  23. data/lib/sidekiq/manager.rb +33 -32
  24. data/lib/sidekiq/metrics/query.rb +156 -0
  25. data/lib/sidekiq/metrics/shared.rb +95 -0
  26. data/lib/sidekiq/metrics/tracking.rb +140 -0
  27. data/lib/sidekiq/middleware/chain.rb +96 -51
  28. data/lib/sidekiq/middleware/current_attributes.rb +58 -20
  29. data/lib/sidekiq/middleware/i18n.rb +6 -4
  30. data/lib/sidekiq/middleware/modules.rb +21 -0
  31. data/lib/sidekiq/monitor.rb +17 -4
  32. data/lib/sidekiq/paginator.rb +11 -3
  33. data/lib/sidekiq/processor.rb +81 -80
  34. data/lib/sidekiq/rails.rb +21 -14
  35. data/lib/sidekiq/redis_client_adapter.rb +111 -0
  36. data/lib/sidekiq/redis_connection.rb +16 -85
  37. data/lib/sidekiq/ring_buffer.rb +29 -0
  38. data/lib/sidekiq/scheduled.rb +66 -38
  39. data/lib/sidekiq/testing/inline.rb +4 -4
  40. data/lib/sidekiq/testing.rb +67 -75
  41. data/lib/sidekiq/transaction_aware_client.rb +44 -0
  42. data/lib/sidekiq/version.rb +2 -1
  43. data/lib/sidekiq/web/action.rb +3 -3
  44. data/lib/sidekiq/web/application.rb +107 -10
  45. data/lib/sidekiq/web/csrf_protection.rb +8 -5
  46. data/lib/sidekiq/web/helpers.rb +65 -43
  47. data/lib/sidekiq/web.rb +19 -14
  48. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  49. data/lib/sidekiq.rb +84 -207
  50. data/sidekiq.gemspec +12 -10
  51. data/web/assets/javascripts/application.js +92 -26
  52. data/web/assets/javascripts/base-charts.js +106 -0
  53. data/web/assets/javascripts/chart.min.js +13 -0
  54. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  55. data/web/assets/javascripts/dashboard-charts.js +182 -0
  56. data/web/assets/javascripts/dashboard.js +10 -249
  57. data/web/assets/javascripts/metrics.js +298 -0
  58. data/web/assets/stylesheets/application-dark.css +4 -0
  59. data/web/assets/stylesheets/application-rtl.css +2 -91
  60. data/web/assets/stylesheets/application.css +75 -299
  61. data/web/locales/ar.yml +70 -70
  62. data/web/locales/cs.yml +62 -62
  63. data/web/locales/da.yml +60 -53
  64. data/web/locales/de.yml +65 -65
  65. data/web/locales/el.yml +43 -24
  66. data/web/locales/en.yml +84 -69
  67. data/web/locales/es.yml +68 -68
  68. data/web/locales/fa.yml +65 -65
  69. data/web/locales/fr.yml +81 -67
  70. data/web/locales/gd.yml +99 -0
  71. data/web/locales/he.yml +65 -64
  72. data/web/locales/hi.yml +59 -59
  73. data/web/locales/it.yml +53 -53
  74. data/web/locales/ja.yml +73 -68
  75. data/web/locales/ko.yml +52 -52
  76. data/web/locales/lt.yml +66 -66
  77. data/web/locales/nb.yml +61 -61
  78. data/web/locales/nl.yml +52 -52
  79. data/web/locales/pl.yml +45 -45
  80. data/web/locales/pt-br.yml +83 -55
  81. data/web/locales/pt.yml +51 -51
  82. data/web/locales/ru.yml +67 -66
  83. data/web/locales/sv.yml +53 -53
  84. data/web/locales/ta.yml +60 -60
  85. data/web/locales/uk.yml +62 -61
  86. data/web/locales/ur.yml +64 -64
  87. data/web/locales/vi.yml +67 -67
  88. data/web/locales/zh-cn.yml +43 -16
  89. data/web/locales/zh-tw.yml +42 -8
  90. data/web/views/_footer.erb +5 -2
  91. data/web/views/_job_info.erb +18 -2
  92. data/web/views/_metrics_period_select.erb +12 -0
  93. data/web/views/_nav.erb +1 -1
  94. data/web/views/_paging.erb +2 -0
  95. data/web/views/_poll_link.erb +1 -1
  96. data/web/views/_summary.erb +7 -7
  97. data/web/views/busy.erb +50 -34
  98. data/web/views/dashboard.erb +26 -4
  99. data/web/views/filtering.erb +7 -0
  100. data/web/views/metrics.erb +91 -0
  101. data/web/views/metrics_for_job.erb +59 -0
  102. data/web/views/morgue.erb +5 -9
  103. data/web/views/queue.erb +15 -15
  104. data/web/views/queues.erb +9 -3
  105. data/web/views/retries.erb +5 -9
  106. data/web/views/scheduled.erb +12 -13
  107. metadata +58 -27
  108. data/lib/sidekiq/delay.rb +0 -43
  109. data/lib/sidekiq/exception_handler.rb +0 -27
  110. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  111. data/lib/sidekiq/extensions/active_record.rb +0 -43
  112. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  113. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  114. data/lib/sidekiq/util.rb +0 -108
  115. data/lib/sidekiq/worker.rb +0 -362
  116. /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,8 +209,7 @@ table .table-checkbox label {
202
209
 
203
210
  .navbar .navbar-brand .status {
204
211
  color: #585454;
205
- display: inline-block;
206
- width: 75px;
212
+ display: inline;
207
213
  }
208
214
 
209
215
 
@@ -364,6 +370,15 @@ img.smallogo {
364
370
  .stat p {
365
371
  font-size: 0.9em;
366
372
  }
373
+
374
+ .num {
375
+ font-family: monospace;
376
+ }
377
+
378
+ td.num {
379
+ text-align: right;
380
+ }
381
+
367
382
  @media (max-width: 767px) {
368
383
  .stats-container {
369
384
  display: block;
@@ -411,51 +426,27 @@ div.interval-slider input {
411
426
  background: currentcolor;
412
427
  }
413
428
 
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;
429
+ #realtime-legend {
430
+ margin-top: -20px;
431
+ padding-left: 30px;
432
+ display: flex;
433
+ justify-content: end;
434
+ align-items: center;
426
435
  }
427
- #realtime-legend .line,
428
- #history-legend .line {
429
- display: inline-block;
430
- margin: 0 0 0 20px;
436
+ #realtime-legend > * {
437
+ min-width: 14rem;
431
438
  }
432
- #realtime-legend .swatch,
433
- #history-legend .swatch {
439
+ #realtime-legend .swatch {
434
440
  display: inline-block;
435
441
  width: 10px;
436
442
  height: 10px;
437
- margin: 0 8px 0 0;
438
- }
439
- #realtime-legend .tag,
440
- #history-legend .tag {
441
- display: inline-block;
443
+ margin: 0 5px;
442
444
  }
443
-
444
- @media (max-width: 790px) {
445
- #realtime-legend,
446
- #history-legend {
447
- float: none;
448
- width: 100%;
449
- margin-bottom: 20px;
450
- }
445
+ #realtime-legend .time {
446
+ min-width: auto;
447
+ text-align: right;
451
448
  }
452
449
 
453
- @media (max-width: 500px) {
454
- #realtime-legend,
455
- #history-legend {
456
- text-align: center;
457
- }
458
- }
459
450
  /* Beacon
460
451
  ********************************** */
461
452
 
@@ -615,247 +606,6 @@ div.interval-slider input {
615
606
  }
616
607
  }
617
608
 
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
609
  .code-wrap {
860
610
  white-space: normal;
861
611
  }
@@ -883,37 +633,25 @@ div.interval-slider input {
883
633
  }
884
634
  }
885
635
 
886
- .redis-url, .redis-namespace {
636
+ .redis-url {
887
637
  overflow: hidden;
888
638
  white-space: nowrap;
889
639
  }
890
640
 
891
641
  @media (min-width: 768px) {
892
642
  .redis-url {
893
- max-width: 200px;
894
- }
895
-
896
- .redis-namespace {
897
- max-width: 150px;
643
+ max-width: 250px;
898
644
  }
899
645
  }
900
646
 
901
647
  @media (min-width: 992px) {
902
648
  .redis-url {
903
- max-width: 390px;
904
- }
905
-
906
- .redis-namespace {
907
- max-width: 300px;
649
+ max-width: 490px;
908
650
  }
909
651
  }
910
652
  @media (min-width: 1200px) {
911
653
  .redis-url {
912
- max-width: 480px;
913
- }
914
-
915
- .redis-namespace {
916
- max-width: 350px;
654
+ max-width: 600px;
917
655
  }
918
656
  }
919
657
 
@@ -947,11 +685,49 @@ div.interval-slider input {
947
685
  }
948
686
 
949
687
  .info-circle {
950
- color: #ccc;
951
- background-color: #000;
688
+ color: #333;
689
+ background-color: #ccc;
952
690
  border-radius: 50%;
953
691
  text-align: center;
954
692
  vertical-align: middle;
955
693
  padding: 3px 7px;
956
694
  margin-left: 5px;
957
695
  }
696
+
697
+ .metrics-swatch-wrapper {
698
+ display: flex;
699
+ align-items: center;
700
+ gap: 6px;
701
+ }
702
+
703
+ .metrics-swatch[type=checkbox] {
704
+ display: inline-block;
705
+ width: 16px;
706
+ height: 16px;
707
+ margin: 0;
708
+ border-radius: 2px;
709
+ appearance: none;
710
+ -webkit-appearance: none;
711
+ -moz-appearance: none;
712
+ border: 1px solid #bbb;
713
+ color: white;
714
+ background-color: currentColor;
715
+ }
716
+
717
+ /* We need to add the checkmark since we've taken over the appearance */
718
+ .metrics-swatch[type=checkbox]:checked {
719
+ border-color: currentColor;
720
+ 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");
721
+ background-size: 100% 100%;
722
+ background-position: center;
723
+ background-repeat: no-repeat;
724
+ }
725
+
726
+ .metrics-swatch[type=checkbox]:focus {
727
+ outline: 1px solid #888;
728
+ outline-offset: 2px;
729
+ }
730
+
731
+ canvas {
732
+ margin: 20px 0 30px;
733
+ }
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: خامل