Coverage for core/api/serializers_/tasks.py: 98%
66 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from rest_framework import serializers
2from rest_framework.reverse import reverse
4__all__ = (
5 'BackgroundQueueSerializer',
6 'BackgroundTaskSerializer',
7 'BackgroundWorkerSerializer',
8)
11class BackgroundTaskSerializer(serializers.Serializer):
12 id = serializers.CharField()
13 url = serializers.HyperlinkedIdentityField(
14 view_name='core-api:rqtask-detail',
15 lookup_field='id',
16 lookup_url_kwarg='id'
17 )
18 description = serializers.CharField()
19 origin = serializers.CharField()
20 func_name = serializers.CharField()
21 args = serializers.SerializerMethodField()
22 kwargs = serializers.SerializerMethodField()
23 result = serializers.CharField()
24 timeout = serializers.IntegerField()
25 result_ttl = serializers.IntegerField()
26 created_at = serializers.DateTimeField()
27 enqueued_at = serializers.DateTimeField()
28 started_at = serializers.DateTimeField()
29 ended_at = serializers.DateTimeField()
30 worker_name = serializers.CharField()
31 position = serializers.SerializerMethodField()
32 status = serializers.SerializerMethodField()
33 meta = serializers.DictField()
34 last_heartbeat = serializers.CharField()
36 is_finished = serializers.BooleanField()
37 is_queued = serializers.BooleanField()
38 is_failed = serializers.BooleanField()
39 is_started = serializers.BooleanField()
40 is_deferred = serializers.BooleanField()
41 is_canceled = serializers.BooleanField()
42 is_scheduled = serializers.BooleanField()
43 is_stopped = serializers.BooleanField()
45 def get_args(self, obj) -> list:
46 return [
47 str(arg) for arg in obj.args
48 ]
50 def get_kwargs(self, obj) -> dict:
51 return {
52 key: str(value) for key, value in obj.kwargs.items()
53 }
55 def get_position(self, obj) -> int:
56 return obj.get_position()
58 def get_status(self, obj) -> str:
59 return obj.get_status()
62class BackgroundQueueSerializer(serializers.Serializer):
63 name = serializers.CharField()
64 url = serializers.SerializerMethodField()
65 jobs = serializers.IntegerField()
66 oldest_job_timestamp = serializers.CharField()
67 index = serializers.IntegerField()
68 scheduler_pid = serializers.CharField()
69 workers = serializers.IntegerField()
70 finished_jobs = serializers.IntegerField()
71 started_jobs = serializers.IntegerField()
72 deferred_jobs = serializers.IntegerField()
73 failed_jobs = serializers.IntegerField()
74 scheduled_jobs = serializers.IntegerField()
76 def get_url(self, obj):
77 return reverse('core-api:rqqueue-detail', args=[obj['name']], request=self.context.get("request"))
80class BackgroundWorkerSerializer(serializers.Serializer):
81 name = serializers.CharField()
82 url = serializers.HyperlinkedIdentityField(
83 view_name='core-api:rqworker-detail',
84 lookup_field='name'
85 )
86 state = serializers.SerializerMethodField()
87 birth_date = serializers.DateTimeField()
88 queue_names = serializers.ListField(
89 child=serializers.CharField()
90 )
91 pid = serializers.CharField()
92 successful_job_count = serializers.IntegerField()
93 failed_job_count = serializers.IntegerField()
94 total_working_time = serializers.IntegerField()
96 def get_state(self, obj):
97 return obj.get_state()