diff --git a/perxis/extensions/bootstrap.py b/perxis/extensions/bootstrap.py
index 64c3569274a72a79ee154bfd1ef1d7f02efb74b5..9ff0e0bd389bded64edce40577796601905df51c 100644
--- a/perxis/extensions/bootstrap.py
+++ b/perxis/extensions/bootstrap.py
@@ -1,8 +1,10 @@
+import asyncio
+
+import aiocron
 import grpc
 import logging
 
 from concurrent import futures
-from perxis.extensions import manager_pb2
 from perxis.collections import collections_pb2_grpc
 from perxis.environments import environments_pb2_grpc
 from perxis.roles import roles_pb2_grpc
@@ -22,7 +24,17 @@ def bootstrap(
     interceptor = header_adder_interceptor(
         'x-perxis-access', 'system'
     )
-    with grpc.insecure_channel(ext_manager_host) as extensions_manager_channel:
+
+    loop = asyncio.get_event_loop()
+
+    @aiocron.crontab('* * * * *', start=False)
+    def register_extension():
+        ext_manager_stub.RegisterExtensions(manager_pb2.RegisterExtensionsRequest(
+            extensions=[ext_descriptor]
+        ))
+        logger.info(f"Расширение {ext_descriptor.extension} зарегистрировано в perxis")
+
+    with grpc.aio.insecure_channel(ext_manager_host) as extensions_manager_channel:
         intercept_channel_extensions_manager_channel = grpc.intercept_channel(extensions_manager_channel, interceptor)
 
         ext_manager_stub = manager_pb2_grpc.ExtensionManagerStub(intercept_channel_extensions_manager_channel)
@@ -43,13 +55,9 @@ def bootstrap(
         #                 f"Изменилась версия расширения {ext_descriptor.extension} ({ext.version} -> {ext_descriptor.version})"
         #             )
 
-        ext_manager_stub.RegisterExtensions(manager_pb2.RegisterExtensionsRequest(
-            extensions=[ext_descriptor]
-        ))
+        register_extension.start()
 
-        logger.info(f"Расширение {ext_descriptor.extension} зарегистрировано в perxis")
-
-        with grpc.insecure_channel(content_host) as content_channel:
+        with grpc.aio.insecure_channel(content_host) as content_channel:
             intercepted_content_channel = grpc.intercept_channel(content_channel, interceptor)
 
             collections_stub = collections_pb2_grpc.CollectionsStub(intercepted_content_channel)
@@ -57,12 +65,21 @@ def bootstrap(
             clients_stub = clients_pb2_grpc.ClientsStub(intercepted_content_channel)
             environments_stub = environments_pb2_grpc.EnvironmentsStub(intercepted_content_channel)
 
-            server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
-            extension_pb2_grpc.add_ExtensionServicer_to_server(
-                servicer_cls(
-                    collections_stub, environments_stub, roles_stub, clients_stub
-                ), server
+            server = grpc.aio.server(futures.ThreadPoolExecutor(max_workers=10))
+            loop.create_task(
+                extension_pb2_grpc.add_ExtensionServicer_to_server(
+                    servicer_cls(
+                        collections_stub, environments_stub, roles_stub, clients_stub
+                    ), server
+                )
             )
             server.add_insecure_port("[::]:50051")
-            server.start()
-            server.wait_for_termination()
+            loop.create_task(server.start())
+            loop.create_task(server.wait_for_termination())
+
+            try:
+                loop.run_forever()
+            finally:
+                loop.close()
+                loop.stop()
+                logging.info('Successfully shutdown service')
diff --git a/requirements.txt b/requirements.txt
index 266a39a950f45fd87d952cb3abc9932c8d771d62..741861e832a5a65a427d28e7e194ac68ea169920 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
+aiocron==1.8
 certifi==2023.7.22
 chardet==5.2.0
 charset-normalizer==3.2.0
diff --git a/setup.py b/setup.py
index 9a53f23287c93ef6d374a9a89e6dc46bbb331eba..b1688574feac249c8f199dc2e78be25b64447040 100644
--- a/setup.py
+++ b/setup.py
@@ -14,7 +14,7 @@ def load_requirements():
 
 setup(
     name='perxis',
-    version='1.0.2',
+    version='1.0.6',
     description='Perxis python client',
     long_description=long_description,
     long_description_content_type='text/markdown',