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