diff --git a/python/tasks/tiktok/tasks.py b/python/tasks/tiktok/tasks.py
index b803921..49f2b49 100644
--- a/python/tasks/tiktok/tasks.py
+++ b/python/tasks/tiktok/tasks.py
@@ -16,6 +16,7 @@ from typing import (
 )
 import celery
 from .config import tiktok_config
+from .utils import Task
 
 #logging.getLogger().setLevel(logging.INFO)
 
@@ -307,8 +308,8 @@ def tiktok_videos_process(meta: Iterable[dict[str, Any]]) -> dict[str, Any]:
     return stats
 
 class audio_get_t:
-    @dataclasses.dataclass
     @dataclasses_json.dataclass_json
+    @dataclasses.dataclass
     class res_t:
         file: str
         file_mp3: str
@@ -316,7 +317,7 @@ class audio_get_t:
         path_mp3: str
         url: str
 
-@celery.shared_task()
+@celery.shared_task(base=Task)
 def audio_get() -> audio_get_t.res_t:
     c = tiktok_config()
     url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
@@ -348,4 +349,3 @@ def audio_get() -> audio_get_t.res_t:
         path_mp3=path_mp3,
         url=url,
     )
-
diff --git a/python/tasks/tiktok/utils.py b/python/tasks/tiktok/utils.py
new file mode 100644
index 0000000..9c224fe
--- /dev/null
+++ b/python/tasks/tiktok/utils.py
@@ -0,0 +1,12 @@
+import celery.app.task
+
+class Task(celery.app.task.Task):
+    def __call__(self, *args, **kwargs):
+        res = super().__call__(*args, **kwargs)
+        return self._to_native(res)
+
+    def _to_native(self, data):
+        if hasattr(data, 'to_dict'):
+            return data.to_dict()
+        else:
+            return data