diff --git a/utils/serializers.py b/utils/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..04de436f74e9a166783440f5cee5488f9d7b1b62
--- /dev/null
+++ b/utils/serializers.py
@@ -0,0 +1,21 @@
+import datetime
+
+# cf. https://stackoverflow.com/questions/30313243/messagepack-and-datetime
+def decode_datetime(obj):
+    if '__datetime__' in obj.keys():
+        obj = datetime.datetime.strptime(obj["as_str"], "%Y%m%dT%H:%M:%S.%f")
+    elif '__date__' in obj.keys():
+        obj = datetime.datetime.strptime(obj["as_str"], "%Y%m%d")
+    else:
+        return obj
+
+# cf. https://stackoverflow.com/questions/30313243/messagepack-and-datetime
+def encode_datetime(obj):
+    if isinstance(obj, datetime.datetime):
+        return {'__datetime__': True, 'as_str': obj.strftime("%Y%m%dT%H:%M:%S.%f")}
+
+    if isinstance(obj, datetime.date):
+        return {'__date__': True, 'as_str': obj.strftime("%Y%m%d")}
+    # if isinstance(obj, Decimal):
+    #     return float(obj)
+    return obj