From e84d056f7f2e23184e4b9647b7fb2c941e633f7e Mon Sep 17 00:00:00 2001 From: Marsway Date: Wed, 4 Mar 2026 10:05:45 +0800 Subject: [PATCH] merge --- .DS_Store | Bin 0 -> 6148 bytes app/admin/__pycache__/views.cpython-312.pyc | Bin 9535 -> 9652 bytes app/admin/routes.py | 22 + app/admin/secure.py | 37 + app/admin/templates/job_list.html | 22 +- app/admin/templates/joblog_details.html | 12 +- app/admin/templates/joblog_list.html | 22 +- app/admin/templates/login.html | 71 + app/admin/views.py | 219 +- app/api/__init__.py | 1 + app/api/auth_routes.py | 51 + app/core/__pycache__/config.cpython-312.pyc | Bin 962 -> 1014 bytes app/core/config.py | 22 + app/db/__pycache__/engine.cpython-312.pyc | Bin 820 -> 848 bytes app/db/__pycache__/schema.cpython-312.pyc | Bin 1653 -> 1676 bytes app/db/models.py | 94 +- app/integrations/__init__.py | 3 +- .../__pycache__/__init__.cpython-312.pyc | Bin 255 -> 324 bytes .../__pycache__/base.cpython-312.pyc | Bin 3751 -> 3940 bytes app/integrations/ehr.py | 114 + app/integrations/seeyon.py | 50 + app/main.py | 48 +- .../__pycache__/fernet.cpython-312.pyc | Bin 3660 -> 4748 bytes app/security/audit.py | 34 + app/security/auth.py | 88 + app/security/bootstrap.py | 42 + app/security/ldap_client.py | 71 + app/security/ldap_sync.py | 67 + app/security/permissions.py | 57 + app/security/session.py | 90 + app/tasks/celery_app.py | 7 +- app/tasks/ldap_sync.py | 9 + data/admin.pass | 1 + data/logs/connecthub.log | 1912 +++++++++++++++++ env.example | 22 + extensions/sync_ehr_to_oa/__init__.py | 6 + extensions/sync_ehr_to_oa/api.py | 329 +++ extensions/sync_ehr_to_oa/job.py | 346 +++ pyproject.toml | 2 + 39 files changed, 3841 insertions(+), 30 deletions(-) create mode 100644 .DS_Store create mode 100644 app/admin/secure.py create mode 100644 app/admin/templates/login.html create mode 100644 app/api/__init__.py create mode 100644 app/api/auth_routes.py create mode 100644 app/integrations/ehr.py create mode 100644 app/security/audit.py create mode 100644 app/security/auth.py create mode 100644 app/security/bootstrap.py create mode 100644 app/security/ldap_client.py create mode 100644 app/security/ldap_sync.py create mode 100644 app/security/permissions.py create mode 100644 app/security/session.py create mode 100644 app/tasks/ldap_sync.py create mode 100644 data/admin.pass create mode 100644 extensions/sync_ehr_to_oa/__init__.py create mode 100644 extensions/sync_ehr_to_oa/api.py create mode 100644 extensions/sync_ehr_to_oa/job.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8a844ed5be9a2a188e848a1db2583c6e158ba51d GIT binary patch literal 6148 zcmeHKJxfC|6uoJmrPM(O1u23L9CVOEN4ICGi<3~CTWP#NQ9u;Dn_%f@^7f=I? zZK}GAsrPke?D$;Hm$_;oZ#W%)m$jeYASY2P*vp00!vRhBm(?I486iSxgMV15+jy zXi}AZVknc2{?Nun788Reos@liD9fzu3q@&mj34T7QjtNaMFCO3S0HUZ$NBzW#vUH< z{`ZsQOB4_V{*?kMC|AlQEXm%jJ&WVJHbmJ#VdJ>OpiV($uVdZdt9S}U8+;)*fRV+- SAbMc(M?lLUl_)S&1-<~g@1=48 literal 0 HcmV?d00001 diff --git a/app/admin/__pycache__/views.cpython-312.pyc b/app/admin/__pycache__/views.cpython-312.pyc index a3b2fb02894a862c7ce5f8bd158d2c18fb8d1ffe..c328c019bc11b39ff889d1c59776152f3cbd13ba 100644 GIT binary patch delta 1026 zcmdn*wZ)tFG%qg~0}w21j?Prt$ji&aB*D5_hKGxJvH`yWOD%Va^yC+Jh7wtj zIuOW`gV4xi4fkqB2p^;eCR4**q6A~FW`eMaxl1@vQD z60GIH=GPjYCZ-gITAn(da>jCo3g$?Laz==0eh}?M83%VLHsjVZmosYeO#UG-kE2SV zI5oK_wPbREpcIp)@Z{@)K?)*3dy2$Cgan9?1QNGcQZkcEiUfd6O}@$YLSDR#skc~) zlhe|R`G8`R7YaEus&9TOWX4$kfsH{xq`#uGVg}D;e$@_^JKUlZQsy{c;a2#-#LVl% zct>1%dey|L1uB=t)hDog0jidop|XVK3cu4>?=Aw{Bj z^*9W?BdfVW<+7|k$ka<5Qa`@PGl)oB7goP0tp16C5#%m0g$s(#m&II8C|(fo{{4X& zB>4M_7%|HJ6#D~1p~+3zi_4Son3|}E4Z|^OM@BC$#^bi4p2`d-gtUO{6E?!03d|?@ zc|4_=PfD|b*b2-*@srBJUhK>#&3L?+m`^dW0@$`^2olYOpy> zd_6Pc(#dSnOBt6EYM;Xz{6J&QYuHEb-C(6jU zZgY~n10&<+&5IRW85vtPzf^q3#27pIhKjRN5F?{ON96+MuM8m8mn3(UST K02xJ^K;r=Hao>Fa delta 931 zcmdnuz2A%XG%qg~0}wbQL}#wt$ji&abc1EH3=bDGdx-c;u}(h4uVk0P4HKy4so`m0 zOX03zOyRNts;Oi^GJvOq1;YT38lK4tEF$%*p)$3+HN3^B20&a6l&|51xvQ2B$yh!t z?&2>|gjrR?2h)XcR1GhJ4K^thth$DWfKl*ZL(+~2Hn?mP<67o&Mor$y7J~B}i{yc3 zS6LLNCKsia#3!evE990ImnbBqDtHC^`zhonWu+#UDC8F@q~;|TRTh+_rYMx;XQ$>V z6qgib=A~;2PW~krBnFCxA`u{QizOv9xui${$kgPYoFn8V!BPw~vGT&mR#R8wp(uSA$jXGHFaEneznd5wgTj7q7 z%mrEd%R&wpcpM<2E?2k}Zz!sExJ;0_$Rqaws9mJLqO)QK&w`}O{F)ssH@NvbY;Gtj zLlxZM5ki=DLqKFY*F>(#JROcVg+*?ts!ynAnGkbPK5iiAij>QW#z^+^NnDT&zRVYL zfg|K+F&oh5O`aN_T8w_0Ohs-$UJ*9~!{&*iZj6kdC*KhJ#G=m{%DDNg_HIr+l zmol!MtSqyPaoyxoGBY?gfz;OmiOCOT0w?d0HDKI4`K|0##x0u<%ZV~FZryxS-hq*E z*Jde2S4PI}%?V2Hm>AQ&uL^3jlGImrhVE)PgW`3z)GGSz!pt->88v~G0qzN<> E0NC*3WdHyG diff --git a/app/admin/routes.py b/app/admin/routes.py index 9eee2c5..9fc904f 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -9,6 +9,8 @@ from starlette.responses import RedirectResponse from app.db import crud from app.db.engine import get_session from app.db.models import JobStatus +from app.security.audit import log_event +from app.security.permissions import button_permission_code, request_has_permission from app.tasks.execute import execute_job @@ -21,6 +23,9 @@ def _redirect_with_error(referer: str, msg: str) -> RedirectResponse: @router.post("/admin/joblogs/{log_id}/retry") def retry_joblog(request: Request, log_id: int): + if not request_has_permission(request, button_permission_code("joblog:retry")): + referer = request.headers.get("Referer") or str(request.url_for("admin:list", identity="job-log")) + return _redirect_with_error(referer, "无权限执行该操作。") session = get_session() try: log = crud.get_job_log(session, log_id) @@ -52,12 +57,22 @@ def retry_joblog(request: Request, log_id: int): ) execute_job.delay(snapshot_params=snapshot, log_id=int(new_log.id)) url = request.url_for("admin:details", identity="job-log", pk=str(new_log.id)) + log_event( + session, + action="admin.action", + target=f"joblog:{log_id}:retry", + detail={"new_log_id": int(new_log.id)}, + request=request, + ) return RedirectResponse(url, status_code=303) finally: session.close() @router.post("/admin/jobs/{job_id}/run") def run_job(request: Request, job_id: str): + if not request_has_permission(request, button_permission_code("job:run")): + referer = request.headers.get("Referer") or str(request.url_for("admin:list", identity="job")) + return _redirect_with_error(referer, "无权限执行该操作。") session = get_session() try: job = crud.get_job(session, job_id) @@ -86,6 +101,13 @@ def run_job(request: Request, job_id: str): ) execute_job.delay(job_id=job.id, log_id=int(new_log.id)) url = request.url_for("admin:details", identity="job-log", pk=str(new_log.id)) + log_event( + session, + action="admin.action", + target=f"job:{job_id}:run", + detail={"new_log_id": int(new_log.id)}, + request=request, + ) return RedirectResponse(url, status_code=303) finally: session.close() diff --git a/app/admin/secure.py b/app/admin/secure.py new file mode 100644 index 0000000..c58ff30 --- /dev/null +++ b/app/admin/secure.py @@ -0,0 +1,37 @@ +from __future__ import annotations + +from sqladmin import ModelView + +from app.security.permissions import request_has_permission, table_permission_code + + +class SecureModelView(ModelView): + def _table_name(self) -> str: + return getattr(self.model, "__tablename__", self.identity) + + def _table_permission(self, action: str) -> str: + return table_permission_code(self._table_name(), action) + + def is_accessible(self, request) -> bool: # type: ignore[override] + return request_has_permission(request, self._table_permission("read")) + + def is_create_allowed(self, request) -> bool: # type: ignore[override] + return request_has_permission(request, self._table_permission("write")) + + def is_edit_allowed(self, request) -> bool: # type: ignore[override] + return request_has_permission(request, self._table_permission("write")) + + def is_delete_allowed(self, request) -> bool: # type: ignore[override] + return request_has_permission(request, self._table_permission("write")) + + def has_action_permission(self, request, action_name: str) -> bool: + code = self.get_action_permission_code(action_name) + if not code: + return True + return request_has_permission(request, code) + + def get_action_permission_code(self, action_name: str) -> str | None: + return None + + def has_permission_code(self, request, code: str) -> bool: + return request_has_permission(request, code) diff --git a/app/admin/templates/job_list.html b/app/admin/templates/job_list.html index e9f41e1..3cf2ee1 100644 --- a/app/admin/templates/job_list.html +++ b/app/admin/templates/job_list.html @@ -41,7 +41,7 @@ {% endif %} {% endif %} - {% if model_view.can_create %} + {% if model_view.is_create_allowed(request) %}
+ 新建{{ model_view.name }} @@ -53,19 +53,20 @@
- {% if model_view.can_delete %} + {% if model_view.is_delete_allowed(request) %} {% include 'sqladmin/modals/delete.html' %} {% endif %} {% for custom_action in model_view._custom_actions_in_list %} - {% if custom_action in model_view._custom_actions_confirmation %} + {% if model_view.has_action_permission(request, custom_action) and custom_action in model_view._custom_actions_confirmation %} {% with confirmation_message = model_view._custom_actions_confirmation[custom_action], custom_action=custom_action, url=model_view._url_for_action(request, custom_action) %} {% include 'sqladmin/modals/list_action_confirmation.html' %} diff --git a/app/admin/templates/joblog_details.html b/app/admin/templates/joblog_details.html index 2b6914d..facd325 100644 --- a/app/admin/templates/joblog_details.html +++ b/app/admin/templates/joblog_details.html @@ -66,12 +66,14 @@ 返回
+ {% if model_view.has_permission_code(request, "button:joblog:retry") %}
- {% if model_view.can_delete %} + {% endif %} + {% if model_view.is_delete_allowed(request) %} {% endif %} - {% if model_view.can_edit %} + {% if model_view.is_edit_allowed(request) %} @@ -107,12 +111,12 @@ -{% if model_view.can_delete %} +{% if model_view.is_delete_allowed(request) %} {% include 'sqladmin/modals/delete.html' %} {% endif %} {% for custom_action in model_view._custom_actions_in_detail %} -{% if custom_action in model_view._custom_actions_confirmation %} +{% if model_view.has_action_permission(request, custom_action) and custom_action in model_view._custom_actions_confirmation %} {% with confirmation_message = model_view._custom_actions_confirmation[custom_action], custom_action=custom_action, url=model_view._url_for_action(request, custom_action) + '?pks=' + (get_object_identifier(model) | string) %} {% include 'sqladmin/modals/details_action_confirmation.html' %} diff --git a/app/admin/templates/joblog_list.html b/app/admin/templates/joblog_list.html index 9020ce0..1c78472 100644 --- a/app/admin/templates/joblog_list.html +++ b/app/admin/templates/joblog_list.html @@ -41,7 +41,7 @@ {% endif %} {% endif %} - {% if model_view.can_create %} + {% if model_view.is_create_allowed(request) %}
+ 新建{{ model_view.name }} @@ -58,19 +58,20 @@
- {% if model_view.can_delete %} + {% if model_view.is_delete_allowed(request) %} {% include 'sqladmin/modals/delete.html' %} {% endif %} {% for custom_action in model_view._custom_actions_in_list %} - {% if custom_action in model_view._custom_actions_confirmation %} + {% if model_view.has_action_permission(request, custom_action) and custom_action in model_view._custom_actions_confirmation %} {% with confirmation_message = model_view._custom_actions_confirmation[custom_action], custom_action=custom_action, url=model_view._url_for_action(request, custom_action) %} {% include 'sqladmin/modals/list_action_confirmation.html' %} diff --git a/app/admin/templates/login.html b/app/admin/templates/login.html new file mode 100644 index 0000000..e4c0203 --- /dev/null +++ b/app/admin/templates/login.html @@ -0,0 +1,71 @@ + + + + + + 登录 + + + +
+
系统登录
+ {% if error %} +
{{ error }}
+ {% endif %} +
+ +
+ +
+
+ +
+ +
+
+ + diff --git a/app/admin/views.py b/app/admin/views.py index 3b9b0ba..0bf373f 100644 --- a/app/admin/views.py +++ b/app/admin/views.py @@ -8,7 +8,7 @@ from zoneinfo import ZoneInfo from croniter import croniter from markupsafe import Markup -from sqladmin import ModelView, action +from sqladmin import action from sqladmin.filters import OperationColumnFilter from sqladmin.models import Request from starlette.responses import RedirectResponse @@ -17,9 +17,15 @@ from app.db import crud from app.db.engine import get_session from app.db.models import JobStatus from app.db.models import Job, JobLog +from app.db.models import AuditLog, LdapGroup, LdapGroupRole, Permission, Role, User from app.plugins.manager import load_job_class from app.security.fernet import encrypt_json from app.tasks.execute import execute_job +from app.admin.secure import SecureModelView +from app.security.permissions import button_permission_code +from app.security.audit import log_event +from app.security.ldap_sync import sync_all_ldap_users +from app.security.auth import hash_password def _maybe_json(value: Any) -> Any: @@ -49,7 +55,7 @@ def _truncate(s: str, n: int = 120) -> str: return (s[: n - 3] + "...") if len(s) > n else s -class JobAdmin(ModelView, model=Job): +class JobAdmin(SecureModelView, model=Job): name = "任务" name_plural = "任务" icon = "fa fa-cogs" @@ -117,6 +123,8 @@ class JobAdmin(ModelView, model=Job): add_in_detail=True, ) async def run_now(self, request: Request): # type: ignore[override] + if not self.has_action_permission(request, "run_now"): + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) pks = request.query_params.get("pks", "").split(",") ids = [p for p in pks if p] if not ids: @@ -156,6 +164,17 @@ class JobAdmin(ModelView, model=Job): session.close() if created_log_id is not None: + session = get_session() + try: + log_event( + session, + action="admin.action", + target=f"job:run_now:{','.join(ids)}", + detail={"created_log_id": created_log_id}, + request=request, + ) + finally: + session.close() url = request.url_for("admin:details", identity="job-log", pk=str(created_log_id)) return RedirectResponse(url, status_code=303) return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) @@ -167,9 +186,22 @@ class JobAdmin(ModelView, model=Job): add_in_detail=True, ) async def view_logs(self, request: Request): # type: ignore[override] + if not self.has_action_permission(request, "view_logs"): + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) pks = request.query_params.get("pks", "").split(",") pk = next((p for p in pks if p), "") base = str(request.url_for("admin:list", identity="job-log")) + session = get_session() + try: + log_event( + session, + action="admin.action", + target=f"job:view_logs:{pk}", + detail={}, + request=request, + ) + finally: + session.close() if pk: return RedirectResponse(f"{base}?search={quote_plus(pk)}", status_code=303) return RedirectResponse(base, status_code=303) @@ -182,6 +214,8 @@ class JobAdmin(ModelView, model=Job): add_in_detail=False, ) async def disable_job(self, request: Request): # type: ignore[override] + if not self.has_action_permission(request, "disable_job"): + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) pks = request.query_params.get("pks", "").split(",") ids = [p for p in pks if p] session = get_session() @@ -195,6 +229,17 @@ class JobAdmin(ModelView, model=Job): session.commit() finally: session.close() + session = get_session() + try: + log_event( + session, + action="admin.action", + target=f"job:disable:{','.join(ids)}", + detail={}, + request=request, + ) + finally: + session.close() referer = request.headers.get("Referer") return RedirectResponse(referer or request.url_for("admin:list", identity=self.identity), status_code=303) @@ -206,6 +251,8 @@ class JobAdmin(ModelView, model=Job): add_in_detail=False, ) async def clear_job_logs(self, request: Request): # type: ignore[override] + if not self.has_action_permission(request, "clear_job_logs"): + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) pks = request.query_params.get("pks", "").split(",") ids = [p for p in pks if p] session = get_session() @@ -214,6 +261,17 @@ class JobAdmin(ModelView, model=Job): crud.delete_job_logs_by_job_id(session, pk) finally: session.close() + session = get_session() + try: + log_event( + session, + action="admin.action", + target=f"job:clear_logs:{','.join(ids)}", + detail={}, + request=request, + ) + finally: + session.close() referer = request.headers.get("Referer") return RedirectResponse(referer or request.url_for("admin:list", identity=self.identity), status_code=303) @@ -225,6 +283,8 @@ class JobAdmin(ModelView, model=Job): add_in_detail=False, ) async def delete_job_with_logs(self, request: Request): # type: ignore[override] + if not self.has_action_permission(request, "delete_job_with_logs"): + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) pks = request.query_params.get("pks", "").split(",") ids = [p for p in pks if p] session = get_session() @@ -238,6 +298,17 @@ class JobAdmin(ModelView, model=Job): session.commit() finally: session.close() + session = get_session() + try: + log_event( + session, + action="admin.action", + target=f"job:delete_with_logs:{','.join(ids)}", + detail={}, + request=request, + ) + finally: + session.close() return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) async def on_model_change(self, data: dict, model: Job, is_created: bool, request) -> None: # type: ignore[override] @@ -304,8 +375,18 @@ class JobAdmin(ModelView, model=Job): raise ValueError("secret_cfg must be a JSON object") data["secret_cfg"] = encrypt_json(scfg2) + def get_action_permission_code(self, action_name: str) -> str | None: + mapping = { + "run_now": button_permission_code("job:run_now"), + "view_logs": button_permission_code("job:view_logs"), + "disable_job": button_permission_code("job:disable"), + "clear_job_logs": button_permission_code("job:clear_logs"), + "delete_job_with_logs": button_permission_code("job:delete_with_logs"), + } + return mapping.get(action_name) -class JobLogAdmin(ModelView, model=JobLog): + +class JobLogAdmin(SecureModelView, model=JobLog): name = "任务日志" name_plural = "任务日志" icon = "fa fa-list" @@ -381,3 +462,135 @@ class JobLogAdmin(ModelView, model=JobLog): + "" ), } + + def get_action_permission_code(self, action_name: str) -> str | None: + return button_permission_code(f"joblog:{action_name}") + + +class UserAdmin(SecureModelView, model=User): + name = "用户" + name_plural = "用户" + icon = "fa fa-user" + column_list = [User.id, User.username, User.is_active, User.is_superuser, User.is_ldap, User.last_login_at] + column_searchable_list = [User.username] + form_excluded_columns = [User.created_at, User.updated_at, User.last_login_at] + column_labels = {"password_hash": "密码(明文或哈希)"} + + async def on_model_change(self, data: dict, model: User, is_created: bool, request) -> None: # type: ignore[override] + raw = data.get("password_hash") + if raw: + raw_s = str(raw) + if not raw_s.startswith("$2"): + data["password_hash"] = hash_password(raw_s) + session = get_session() + try: + log_event( + session, + action="permission.change", + target=f"user:{model.username}", + detail={"created": is_created}, + request=request, + ) + finally: + session.close() + + +class RoleAdmin(SecureModelView, model=Role): + name = "角色" + name_plural = "角色" + icon = "fa fa-users" + + async def on_model_change(self, data: dict, model: Role, is_created: bool, request) -> None: # type: ignore[override] + session = get_session() + try: + log_event( + session, + action="permission.change", + target=f"role:{model.name}", + detail={"created": is_created}, + request=request, + ) + finally: + session.close() + + +class PermissionAdmin(SecureModelView, model=Permission): + name = "权限" + name_plural = "权限" + icon = "fa fa-key" + + async def on_model_change(self, data: dict, model: Permission, is_created: bool, request) -> None: # type: ignore[override] + session = get_session() + try: + log_event( + session, + action="permission.change", + target=f"permission:{model.code}", + detail={"created": is_created}, + request=request, + ) + finally: + session.close() + + +class LdapGroupAdmin(SecureModelView, model=LdapGroup): + name = "LDAP组" + name_plural = "LDAP组" + icon = "fa fa-sitemap" + + @action( + name="sync_ldap", + label="同步LDAP", + confirmation_message="确认从 LDAP 同步组与成员?", + add_in_list=True, + add_in_detail=False, + ) + async def sync_ldap(self, request: Request): # type: ignore[override] + if not self.has_action_permission(request, "sync_ldap"): + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) + updated = sync_all_ldap_users() + session = get_session() + try: + log_event( + session, + action="ldap.sync.manual", + target="ldap", + detail={"updated_users": updated}, + request=request, + ) + finally: + session.close() + return RedirectResponse(request.url_for("admin:list", identity=self.identity), status_code=303) + + def get_action_permission_code(self, action_name: str) -> str | None: + if action_name == "sync_ldap": + return button_permission_code("ldap:sync") + return None + + +class LdapGroupRoleAdmin(SecureModelView, model=LdapGroupRole): + name = "LDAP组映射" + name_plural = "LDAP组映射" + icon = "fa fa-random" + + async def on_model_change(self, data: dict, model: LdapGroupRole, is_created: bool, request) -> None: # type: ignore[override] + session = get_session() + try: + log_event( + session, + action="permission.change", + target=f"ldap_group_role:{model.id}", + detail={"created": is_created}, + request=request, + ) + finally: + session.close() + + +class AuditLogAdmin(SecureModelView, model=AuditLog): + name = "审计日志" + name_plural = "审计日志" + icon = "fa fa-shield" + can_create = False + can_edit = False + can_delete = False diff --git a/app/api/__init__.py b/app/api/__init__.py new file mode 100644 index 0000000..9d48db4 --- /dev/null +++ b/app/api/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/app/api/auth_routes.py b/app/api/auth_routes.py new file mode 100644 index 0000000..8c18c61 --- /dev/null +++ b/app/api/auth_routes.py @@ -0,0 +1,51 @@ +from __future__ import annotations + +from fastapi import APIRouter, Form, Request +from fastapi.responses import RedirectResponse +from fastapi.templating import Jinja2Templates + +from app.security.auth import authenticate +from app.security.session import ( + SESSION_COOKIE_NAME, + clear_session_cookie, + create_session, + delete_session, + set_session_cookie, +) + + +router = APIRouter() +templates = Jinja2Templates(directory="app/admin/templates") + + +@router.get("/login") +def login_page(request: Request, next: str | None = None): # noqa: A002 + return templates.TemplateResponse( + "login.html", + {"request": request, "error": "", "next": next or "/admin"}, + ) + + +@router.post("/login") +def login_action(request: Request, username: str = Form(...), password: str = Form(...), next: str = Form("/admin")): + user_id = authenticate(username, password, request=request) + if not user_id: + return templates.TemplateResponse( + "login.html", + {"request": request, "error": "用户名或密码错误", "next": next}, + status_code=401, + ) + session_id = create_session(user_id, request) + response = RedirectResponse(next or "/admin", status_code=303) + set_session_cookie(response, session_id) + return response + + +@router.get("/logout") +def logout(request: Request): + session_id = request.cookies.get(SESSION_COOKIE_NAME) + if session_id: + delete_session(session_id) + response = RedirectResponse("/login", status_code=303) + clear_session_cookie(response) + return response diff --git a/app/core/__pycache__/config.cpython-312.pyc b/app/core/__pycache__/config.cpython-312.pyc index 752091d2bc33d5287dd4729a30b9f040907a7ebf..7fa2b7da9571b7260153491a370f7a18e2748343 100644 GIT binary patch delta 123 zcmX@a{*9gQG%qg~0}#|CM`x-qZRDH87#LWPUtE%2lv-Svqg_y3nVescZl$lEoS&DM znp~1mnq-Aw#ut>Q#3yGY=B1~`=cYQqG+LRO7#ksUY~IUg&&ZM5;MU=MnI&~H3-dkz DJ{~K< delta 71 zcmeyyeu$m#G%qg~0}$xzMQ46s+{ibHQC7CNFekGl)k+@-QW8rN^^^1S@=}vaGD?&5 YQZ|2Nv}fcnY;fyvzRY4c*@Af=0RO}mu>b%7 diff --git a/app/core/config.py b/app/core/config.py index 750e7ca..bda895e 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -14,6 +14,28 @@ class Settings(BaseSettings): dev_mode: bool = False log_dir: str | None = "/data/logs" + # Auth / session + auth_enabled: bool = True + session_secret: str = "change_me_session_secret" + session_expiry_minutes: int = 1440 + password_hash_algo: str = "bcrypt" + + # Bootstrap admin + bootstrap_admin_username: str = "admin" + bootstrap_admin_generate: bool = True + bootstrap_admin_pass_path: str = "/data/admin.pass" + + # LDAP + ldap_uri: str = "ldap://localhost:389" + ldap_bind_dn: str = "" + ldap_bind_password: str = "" + ldap_base_dn: str = "" + ldap_user_filter: str = "(uid={username})" + ldap_group_filter: str = "(member={user_dn})" + ldap_use_starttls: bool = False + ldap_verify_tls: bool = True + ldap_sync_interval_minutes: int = 5 + settings = Settings() diff --git a/app/db/__pycache__/engine.cpython-312.pyc b/app/db/__pycache__/engine.cpython-312.pyc index 07a82f4a7d011e832145b8f60b5810803c2cae6e..e658989abd42b7c46e1bdcae386439721617d334 100644 GIT binary patch delta 341 zcmdnOc7cueG%qg~0}xD4j?Vl&kyn!O%tUp|`V`g_woJw-&Qy*p5s)k@$P!28gLo>T2fk+8Zy~}QHJjpPjY@zl@=rEo3g%#s&n^c`G&4CQ$^#7qxv@A4NPJ*sWMsU{p!AeM^L zz#}ptwuO!NG%qg~0}$xzMQ1*r$ScWsXrj7hJrhGJb1Fxc5J(0UU>D62MO6jjrLeAM zgoqZgq_Cy1XENq7W-_F3tl?bE3=xmw2HL}x%ALxZ!VZKSYq(akf@Sy_qIgnxQ@C4L zqIfHLH2Eg}@R{t(C?y%9$#jb+IX^EiHMt}{u_(Rx7F$|rNoi5)ZO_BM*as%mT3u><3IQghpLR UPQSvR(ZKVCjge8RNEm1b0C|l}yZ`_I diff --git a/app/db/__pycache__/schema.cpython-312.pyc b/app/db/__pycache__/schema.cpython-312.pyc index e0925e38fe2ccf3dd3c9c41887bc68db2d377d41..6458aa870dd8221159937edc85d513ea49c7cc5c 100644 GIT binary patch delta 862 zcmYjPT}TvB6ux)vo!!-OcOj)RMK>*U$Tm|Div9?d{*Xc`Fv8ZEo38E7*vu@su%eN$ zik8Yy_UM~y;&W8?&~q<}{V~{E;#v;|7T8QZ=S!h%8vTlxd(8xPzh0Qa3 z6=5`kZl%zjgHRWzaNk~VUQONYY)rUci_mjCgE5*oL{Snil80Cp9I8d)tPSo=dYA<> z5yJHjR_r-^Wk>=Qvl84+7VQk9iLepCU5O=#bGQH zgI~^(K&ng8V~MzCIwYbcWzq4l+^j__(j8+)fa55iyF&qKnw%I4-3^6|pexbUYxfGp zCyzq_wb!J5Q%&RNhnv4j!7ozTid6QZWmT#gZeEiDtGq98t5U-`U@)05fs%k?MejW=^!OQYFWnNa(UYf+1xxUQR4kHH|?S{k!Ild}c+-=G_I zDP6{1`v*N*=6KlvQxX<4JfJEIMltUaTGuqYRxB5*APm@-#d=@U?CDJMWAK#yNDP^KAD>?p1e}7o*4##zs#Z1G? z@dvo$73Yxwua9yg^PK@qBF4@c$KZ_r2D2R8FM=`thN?DD-3qE(M-|&1f*XGqNm#)y F`yape)aL*I delta 837 zcmYjP-Afcv6u)QY&g|;AD@x)A)lQ1&^spEOf^CAaBJ?4dPa0z5%$Qr_jNX|=Ekz+= zUC>m9GO!?f$&$dwDEbQ`*w~;N>Y)cw-vkTnA?V&|jn2b4=l;(3Id?wtvn28^5-CQM zp7vc!^(;rKA+g*Ln+BvKoi~MHu~(#eNXN6dH>8Jkfy(fNs1)t8AO(C$wJh6J-IQ%P z3g?UM){T^9_}DeZU24YXRmaeH=3Jl$9?_S$}b=+=q(@5bLq81feO~h>of$p5<;eBJ==OWB@cD#b^Rv@?)TI zyDU}bbENP-7jN=`c&l(>nr+yrq3mD>9n7FyR9QK{^_ ze$6)1!=A}Wtt}L!wLeRxi-~OF5zfU^HRr5@~afh zvnDCaOG*wa-a2;=z-#91*n66&SfxS?~E++U#Y8ctRu<)Zp`u zOM*E`EqjW@aMQ%{@qlfc3MMiI3ELj2V`kiGTZU5P{T3QDKcbF|#Pxyru&o=WLqz6P z$r!6hB*v;33pN%`P`9*cv=W74?2rz-^&SrZ-%#x~s@p=x_eBm){wS6}gCO(|d=t-X diff --git a/app/db/models.py b/app/db/models.py index b2c8671..b9e7a29 100644 --- a/app/db/models.py +++ b/app/db/models.py @@ -4,7 +4,7 @@ import enum from datetime import datetime from typing import Any -from sqlalchemy import JSON, Boolean, DateTime, Enum, ForeignKey, Integer, String, Text, func +from sqlalchemy import JSON, Boolean, Column, DateTime, Enum, ForeignKey, Integer, String, Table, Text, func from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship @@ -12,6 +12,21 @@ class Base(DeclarativeBase): pass +user_roles = Table( + "user_roles", + Base.metadata, + Column("user_id", ForeignKey("users.id"), primary_key=True), + Column("role_id", ForeignKey("roles.id"), primary_key=True), +) + +role_permissions = Table( + "role_permissions", + Base.metadata, + Column("role_id", ForeignKey("roles.id"), primary_key=True), + Column("permission_id", ForeignKey("permissions.id"), primary_key=True), +) + + class Job(Base): __tablename__ = "jobs" @@ -64,3 +79,80 @@ class JobLog(Base): job: Mapped[Job] = relationship(back_populates="logs") +class User(Base): + __tablename__ = "users" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + username: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False) + password_hash: Mapped[str] = mapped_column(Text, default="", nullable=False) + is_active: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False) + is_superuser: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + is_ldap: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) + last_login_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now(), nullable=False) + updated_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False + ) + + roles: Mapped[list["Role"]] = relationship(secondary=user_roles, back_populates="users") + + +class Role(Base): + __tablename__ = "roles" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + name: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False) + description: Mapped[str] = mapped_column(Text, default="", nullable=False) + + users: Mapped[list[User]] = relationship(secondary=user_roles, back_populates="roles") + permissions: Mapped[list["Permission"]] = relationship(secondary=role_permissions, back_populates="roles") + + +class Permission(Base): + __tablename__ = "permissions" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + code: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False) + description: Mapped[str] = mapped_column(Text, default="", nullable=False) + + roles: Mapped[list[Role]] = relationship(secondary=role_permissions, back_populates="permissions") + + +class LdapGroup(Base): + __tablename__ = "ldap_groups" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + dn: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False) + name: Mapped[str] = mapped_column(String, index=True, nullable=False) + + +class LdapGroupRole(Base): + __tablename__ = "ldap_group_roles" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + ldap_group_id: Mapped[int] = mapped_column(ForeignKey("ldap_groups.id"), nullable=False) + role_id: Mapped[int] = mapped_column(ForeignKey("roles.id"), nullable=False) + + +class AuditLog(Base): + __tablename__ = "audit_logs" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + actor_user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id"), nullable=True) + action: Mapped[str] = mapped_column(String, index=True, nullable=False) + target: Mapped[str] = mapped_column(String, default="", nullable=False) + detail: Mapped[dict[str, Any]] = mapped_column(JSON, default=dict, nullable=False) + ip: Mapped[str] = mapped_column(String, default="", nullable=False) + user_agent: Mapped[str] = mapped_column(Text, default="", nullable=False) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now(), nullable=False) + + +class Session(Base): + __tablename__ = "sessions" + + id: Mapped[str] = mapped_column(String, primary_key=True) + user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False, index=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now(), nullable=False) + expires_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False) + ip: Mapped[str] = mapped_column(String, default="", nullable=False) + user_agent: Mapped[str] = mapped_column(Text, default="", nullable=False) diff --git a/app/integrations/__init__.py b/app/integrations/__init__.py index 4d53d5e..3739562 100644 --- a/app/integrations/__init__.py +++ b/app/integrations/__init__.py @@ -2,6 +2,7 @@ from app.integrations.base import BaseClient from app.integrations.didi import DidiClient +from app.integrations.ehr import EhrClient from app.integrations.seeyon import SeeyonClient -__all__ = ["BaseClient", "DidiClient", "SeeyonClient"] \ No newline at end of file +__all__ = ["BaseClient", "DidiClient", "SeeyonClient", "EhrClient"] \ No newline at end of file diff --git a/app/integrations/__pycache__/__init__.cpython-312.pyc b/app/integrations/__pycache__/__init__.cpython-312.pyc index 17af24df7567497c2292302ed4b9453798163f9a..e5d50bca5aee283602084df87ba2db75349d5350 100644 GIT binary patch delta 177 zcmey*c!Y`fG%qg~0}$|6MQ1LV$SbL*0pv_)NMVR#NMTH2%3;i9ieh2}v6*w2b6KKT zfNYi&)^w&Q)=D-__K9w~vYL#yc!E@m{D(V0L delta 111 zcmX@Y^q-OUG%qg~0}xy=iq6cK$SbKJ1>{U;NMVR#NMTH2%3;i9ieh49NMTNAjAE{2 z(PW(%qRUal3{>Q&$ue=C+Qdf|Y9Ip`fw))%NPJ*sWMurv#=t1^ltJeKw|IwMBYP1C GPyzraxE84Z diff --git a/app/integrations/__pycache__/base.cpython-312.pyc b/app/integrations/__pycache__/base.cpython-312.pyc index c1feeb483c3470d825ada835ff69849273525a4a..3223a0dae4ff4234f8423ddc42dfbcfcb88afc51 100644 GIT binary patch delta 1069 zcmZ`&O=uHA6rS15Ci|0(ZKe4m4gHr0CZ$43s`MvqJZM|c>Y+%L*j-H4wh6NWT{D76-r`fH^Y41&JXv^<&=P8RuWoI1Ox2Dw8}kISA6AC}06K zr2z>$+`cu4g*CVcHBhwE$6-0DWI#R&9>2yHsJj8Hv2iea3xJ|10ZSo2gaFyHi!DWo z0~i?2y)>%G6E4uMNf=@qwrjTgJmw$48?Y!_%{5XzzY|LZI-4dGgnFZ*Vztz$M(b^d zuSYiAwLo2CWrHR$fdI>fkK9!JDQ3>mIj4aQV8=D?I4D8vD8VjZ`Kx3Ax&fLkImC9&k{xX`coRGJUNl$ZG zHmxMG%v{<^mHBKYTRrO)O{kK4Vlb%cc?%`ar}U(zBeU#U(9uO*tNG-a*ym-<+8YJ2 z9iSfaM-0Hz#4iO8d4sF+iu^FPuD$mje&>yCqGk2N(1{)2;N9`niIoXztWWOx26s-L zS$2^DDb}QKMxUFnr*=L1&N+=DDM~N9+G*Vv9dTtW%56ubL_pXc9&Jf@gja6J&?6)Q zWKN#<_E28gW|*195RY2f%Y+$3$QL;RT)39W+XSD1WP`(QT-xH{kgGUV!n6C~*x*cXGx L;7`C1d1=O9-yqSx delta 999 zcmZ`&O-vI(6n?XR-5+*QghEIy6wp}23Lf~0e-#>o#(IzwF(fuDS_)D!yQZX>0_h18 zgXkQ%7~_FN6E5|nM-^_KOgL!IUc4E-n0Rq!*L54C@9^fEm+yV=XELAT&yQN~O;ZPE zTdAA#@6?ypu&m|}ZA)c2ELqW9 zD@Z6D4p4a7GA}^XLQ5D65Ycv-5;p{l(Z(Ac<#1L&Fa;72d0n^)RYc?}>IFCIlL7hw z&s21xv;F)j{y5UQW-DGX#or3i8|0OL?{9%E9rrg(+8NXcPnH=AZvnC+L@Bd%HZ0>T zn`0W-v+1k)gCEu3sDw(eB2GgICAI6AZ}$s-uB1>`?#{XSqFop7;YB*2X3gfh?zlPZ zI;D9xPq$PjZs0b?#c}59(sItt*Oi4*4&QNb7Yos}HW)P+=nf6@E#W@8p~d38tk61q zjCO7p9~Ga?9z^@^+qFb3QyZ@78zTLxjhWfn@N4Hod-lz3=IEHd-@}Dpjq4MJuxDtQ zA$hO$QcGq)-am=BACNOcwA)zh=wr0HRB(z*Nzrfe6fc~jJH~00rU%B;*eDN-Fqf1X z7+y3*H=E9&3Hr8a$~eYp{5RkWw96b^yU1ahxuoh1j?eRer|zK?zw*C;IkRl#U3YmU zbz{z1E-pE9N#(y(KZ(CEQx5gKhCDq_S@EUmfjMsQA@LY@=V-#J%17k(@BQ?JHHdoY cCo6%D)1Oukx + - 401 自动刷新 token 并重试一次 + """ + + def __init__( + self, + *, + base_url: str = "https://openapi.italent.cn", + secret_params: dict[str, str], + grant_type: str = "client_credentials", + token_skew_s: int = 30, + timeout_s: float = 10.0, + retries: int = 2, + retry_backoff_s: float = 0.5, + headers: dict[str, str] | None = None, + ) -> None: + super().__init__( + base_url=base_url, + timeout_s=timeout_s, + retries=retries, + retry_backoff_s=retry_backoff_s, + headers=headers, + ) + + app_key = str((secret_params or {}).get("app_key", "") or "") + app_secret = str((secret_params or {}).get("app_secret", "") or "") + if not app_key or not app_secret: + raise ValueError("secret_params must contain app_key and app_secret") + + self.secret_params = dict(secret_params) + self.grant_type = grant_type + self.token_skew_s = token_skew_s + + self._access_token: str | None = None + self._token_type: str | None = None + self._token_expires_at: float | None = None + + def authenticate(self) -> str: + body: dict[str, Any] = { + "grant_type": self.grant_type, + "app_key": self.secret_params["app_key"], + "app_secret": self.secret_params["app_secret"], + } + resp = super().request( + "POST", + "/token", + json=body, + headers={"Content-Type": "application/json"}, + ) + data = resp.json() if resp.content else {} + access_token = str(data.get("access_token", "") or "") + token_type = str(data.get("token_type", "") or "Bearer") + expires_in = int(data.get("expires_in", 0) or 0) + if not access_token: + raise RuntimeError("EHR authenticate failed (access_token missing)") + + now = time.time() + skew = max(0, int(self.token_skew_s or 0)) + self._access_token = access_token + self._token_type = token_type + self._token_expires_at = now + max(0, expires_in - skew) + logger.info("EHR access_token acquired (cached) expires_in=%s token_type=%s", expires_in, token_type) + return access_token + + def _get_access_token(self) -> str: + now = time.time() + if self._access_token and self._token_expires_at and now < self._token_expires_at: + return self._access_token + return self.authenticate() + + def request(self, method: str, path: str, **kwargs: Any) -> httpx.Response: # type: ignore[override] + token = self._get_access_token() + token_type = self._token_type or "Bearer" + + headers = dict(kwargs.pop("headers", {}) or {}) + headers["Authorization"] = f"{token_type} {token}" + + try: + return super().request(method, path, headers=headers, **kwargs) + except httpx.HTTPStatusError as e: + resp = e.response + if resp.status_code != 401: + raise + + logger.info("EHR access_token invalid (401), refreshing and retrying once") + self._access_token = None + self._token_type = None + self._token_expires_at = None + + token2 = self._get_access_token() + token_type2 = self._token_type or "Bearer" + headers["Authorization"] = f"{token_type2} {token2}" + return super().request(method, path, headers=headers, **kwargs) + + def request_authed(self, method: str, path: str, **kwargs: Any) -> httpx.Response: + return self.request(method, path, **kwargs) diff --git a/app/integrations/seeyon.py b/app/integrations/seeyon.py index a8d8c20..da1d1f9 100644 --- a/app/integrations/seeyon.py +++ b/app/integrations/seeyon.py @@ -114,3 +114,53 @@ class SeeyonClient(BaseClient): json=body, headers={"Content-Type": "application/json"}, ) + + def batch_update_cap4_form_soap( + self, + *, + formCode: str, + loginName: str, + rightId: str, + dataList: list[dict[str, Any]], + uniqueFiled: list[str] | None = None, + doTrigger: bool | None = None, + ) -> httpx.Response: + """ + 无流程批量更新: + POST /seeyon/rest/cap4/form/soap/batch-update + + 参数对齐致远接口: + - formCode/loginName/rightId/dataList 必填 + - uniqueFiled/doTrigger 可选 + """ + form_code = str(formCode or "").strip() + login_name = str(loginName or "").strip() + right_id = str(rightId or "").strip() + if not form_code: + raise ValueError("formCode is required") + if not login_name: + raise ValueError("loginName is required") + if not right_id: + raise ValueError("rightId is required") + if not isinstance(dataList, list) or len(dataList) == 0: + raise ValueError("dataList is required and must be a non-empty list") + if uniqueFiled is not None and not isinstance(uniqueFiled, list): + raise ValueError("uniqueFiled must be a list if provided") + + body: dict[str, Any] = { + "formCode": form_code, + "loginName": login_name, + "rightId": right_id, + "dataList": dataList, + } + if uniqueFiled is not None: + body["uniqueFiled"] = uniqueFiled + if doTrigger is not None: + body["doTrigger"] = doTrigger + + return self.request( + "POST", + "/seeyon/rest/cap4/form/soap/batch-update", + json=body, + headers={"Content-Type": "application/json"}, + ) diff --git a/app/main.py b/app/main.py index 922551a..7d71e43 100644 --- a/app/main.py +++ b/app/main.py @@ -2,16 +2,29 @@ from __future__ import annotations import os -from fastapi import FastAPI +from fastapi import FastAPI, Request from sqladmin import Admin +from starlette.responses import RedirectResponse from app.admin.routes import router as admin_router -from app.admin.views import JobAdmin, JobLogAdmin +from app.admin.views import ( + AuditLogAdmin, + JobAdmin, + JobLogAdmin, + LdapGroupAdmin, + LdapGroupRoleAdmin, + PermissionAdmin, + RoleAdmin, + UserAdmin, +) from app.core.config import settings from app.core.logging import setup_logging from app.db.engine import engine from app.db.schema import ensure_schema +from app.security.bootstrap import bootstrap_admin +from app.security.session import get_current_user from app.security.fernet import get_or_create_fernet_key +from app.api.auth_routes import router as auth_router def _init_db() -> None: @@ -26,6 +39,7 @@ def _ensure_runtime() -> None: # 确保 Fernet key 准备好(或自动生成) get_or_create_fernet_key(settings.fernet_key_path) _init_db() + bootstrap_admin() def create_app() -> FastAPI: @@ -34,16 +48,46 @@ def create_app() -> FastAPI: app = FastAPI(title=settings.app_name) + app.include_router(auth_router) app.include_router(admin_router) admin = Admin(app=app, engine=engine, templates_dir="app/admin/templates") admin.add_view(JobAdmin) admin.add_view(JobLogAdmin) + admin.add_view(UserAdmin) + admin.add_view(RoleAdmin) + admin.add_view(PermissionAdmin) + admin.add_view(LdapGroupAdmin) + admin.add_view(LdapGroupRoleAdmin) + admin.add_view(AuditLogAdmin) + + @app.middleware("http") + async def auth_middleware(request: Request, call_next): + if not settings.auth_enabled: + return await call_next(request) + + path = request.url.path + public_prefixes = ("/login", "/logout", "/health") + static_prefixes = ("/admin/static", "/static") + if path.startswith(public_prefixes) or path.startswith(static_prefixes): + return await call_next(request) + + user = get_current_user(request) + if not user: + next_url = request.url.path + if request.url.query: + next_url = f"{next_url}?{request.url.query}" + return RedirectResponse(f"/login?next={next_url}", status_code=303) + return await call_next(request) @app.get("/health") def health(): return {"ok": True, "name": settings.app_name} + @app.get("/") + def root(): + return RedirectResponse("/admin", status_code=303) + return app diff --git a/app/security/__pycache__/fernet.cpython-312.pyc b/app/security/__pycache__/fernet.cpython-312.pyc index 261fe1548014c0f8af63ad45fc780e58b52c1cc8..72be9d49814cdb534c9064de80d49bff16bbb1b5 100644 GIT binary patch delta 1372 zcmZuwO>7%Q6rTO_?t0hu+9vp?F>K=eIc=;!n?RIS94eNePQ+EXej)zKow2M(@40x2ND1##d2h#(|5#I>a)t03h_4u}X_GAVHTCL5+qSd}w9bN$=PS zUdCl+$%QUK%ntzoIV0lmW!7Qcox{oi4jfJIgr17s^RFOr7rH(DEEWekyd^ZfC6vEn zH+#YkMP%&n+@6L%vVP4V1p?sk*uZsp;)UuMH$cdylomV7X5uq}o zOE;9`65Fe2S$L~xB%%HF;c4?%Zm=4FQFO4}x*H?12O^l)k1mLS^OHdZ|Gv-#r}h}n787nV;d-#m#2WpdBp)Wf2)292z8>3}OgAUf zKb>z+PH$$eZDq2}Om@6o*UUvv3Cozjdt%tE$$2N37qFAik4XOllZQt5 delta 385 zcmeBCJtM<+nwOW00SIdJqBEDWZRC5wrFaj>oz76hP|TFc5X`{IP{IgO00OHa)MP;( z(aCPy3S6t9GPR788+hdz87E(05}6#s&E*c02xd@bC}D%>Vqj2VC=#q?D&d6jQX^zI%NZ(|BN@sWHJSY;&*sx)AE)a0Vdf|B^G;{3cK zXP}T75ErKdi3Wz7+yXcF1v@w=&k(R>WS#s{KtW0zDAA_jD8z73h|^Jr`Jgn9qdN0J zbyi26$!3Bk{H{RhTdYZyC8@=lOhvAfD+Lu~Kw?EMKthwH$N|PK0*iV~-YQtm=sa0h UNS4uevbT^W2Roy7ksweJ0GrrR_5c6? diff --git a/app/security/audit.py b/app/security/audit.py new file mode 100644 index 0000000..597cd40 --- /dev/null +++ b/app/security/audit.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +from typing import Any + +from sqlalchemy.orm import Session + +from app.db.models import AuditLog, User + + +def log_event( + session: Session, + *, + action: str, + target: str = "", + detail: dict[str, Any] | None = None, + request=None, + actor: User | None = None, +) -> None: + ip = "" + user_agent = "" + if request is not None: + ip = request.client.host if getattr(request, "client", None) else "" + user_agent = request.headers.get("User-Agent", "") if getattr(request, "headers", None) else "" + + log = AuditLog( + actor_user_id=actor.id if actor else None, + action=action, + target=target, + detail=detail or {}, + ip=ip, + user_agent=user_agent, + ) + session.add(log) + session.commit() diff --git a/app/security/auth.py b/app/security/auth.py new file mode 100644 index 0000000..082f6c1 --- /dev/null +++ b/app/security/auth.py @@ -0,0 +1,88 @@ +from __future__ import annotations + +from datetime import datetime + +import bcrypt +from sqlalchemy import select + +from app.db.engine import get_session +from app.db.models import User +from app.security.audit import log_event +from app.security.ldap_client import LdapClient +from app.security.ldap_sync import sync_user_ldap_roles + + +def hash_password(password: str) -> str: + return bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt()).decode("utf-8") + + +def verify_password(password: str, hashed: str) -> bool: + if not hashed: + return False + try: + return bcrypt.checkpw(password.encode("utf-8"), hashed.encode("utf-8")) + except Exception: + return False + + +def get_user_by_username(session, username: str) -> User | None: + return session.scalar(select(User).where(User.username == username)) + + +def authenticate_local(username: str, password: str, request=None) -> int | None: + db = get_session() + try: + user = get_user_by_username(db, username) + if not user or not user.is_active or user.is_ldap: + if user: + log_event(db, action="login.failed", target=username, detail={"reason": "local_denied"}, request=request) + return None + if not verify_password(password, user.password_hash): + log_event(db, action="login.failed", target=username, detail={"reason": "password"}, request=request) + return None + user.last_login_at = datetime.utcnow() + db.add(user) + db.commit() + log_event(db, action="login.success", target=username, detail={"provider": "local"}, request=request, actor=user) + return int(user.id) + finally: + db.close() + + +def authenticate_ldap(username: str, password: str, request=None) -> int | None: + client = LdapClient() + result = client.authenticate(username, password) + if not result: + db = get_session() + try: + log_event(db, action="login.failed", target=username, detail={"reason": "ldap"}, request=request) + finally: + db.close() + return None + + user_dn = result["user_dn"] + db = get_session() + try: + user = get_user_by_username(db, username) + if not user: + user = User(username=username, is_active=True, is_superuser=False, is_ldap=True, password_hash="") + db.add(user) + db.commit() + db.refresh(user) + user.is_ldap = True + user.is_active = True + user.last_login_at = datetime.utcnow() + sync_user_ldap_roles(session=db, user=user, username=username, user_dn=user_dn) + db.add(user) + db.commit() + log_event(db, action="login.success", target=username, detail={"provider": "ldap"}, request=request, actor=user) + return int(user.id) + finally: + db.close() + + +def authenticate(username: str, password: str, request=None) -> int | None: + user_id = authenticate_local(username, password, request=request) + if user_id: + return user_id + return authenticate_ldap(username, password, request=request) diff --git a/app/security/bootstrap.py b/app/security/bootstrap.py new file mode 100644 index 0000000..3018ae8 --- /dev/null +++ b/app/security/bootstrap.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +import os +import secrets + +from sqlalchemy import select + +from app.core.config import settings +from app.db.engine import get_session +from app.db.models import User +from app.security.audit import log_event +from app.security.auth import hash_password + + +def bootstrap_admin() -> None: + if not settings.bootstrap_admin_generate: + return + db = get_session() + try: + existing = db.scalar(select(User).where(User.is_superuser.is_(True))) + if existing: + return + password = secrets.token_urlsafe(16) + user = User( + username=settings.bootstrap_admin_username, + password_hash=hash_password(password), + is_active=True, + is_superuser=True, + is_ldap=False, + ) + db.add(user) + db.commit() + db.refresh(user) + + pass_path = settings.bootstrap_admin_pass_path + os.makedirs(os.path.dirname(pass_path), exist_ok=True) + with open(pass_path, "w", encoding="utf-8") as f: + f.write(password + "\n") + + log_event(db, action="bootstrap.admin.created", target=user.username, detail={}, request=None, actor=user) + finally: + db.close() diff --git a/app/security/ldap_client.py b/app/security/ldap_client.py new file mode 100644 index 0000000..8896b36 --- /dev/null +++ b/app/security/ldap_client.py @@ -0,0 +1,71 @@ +from __future__ import annotations + +import ssl +from typing import Any + +from ldap3 import ALL, Connection, Server, Tls + +from app.core.config import settings + + +class LdapClient: + def __init__(self) -> None: + tls = None + if settings.ldap_uri.startswith("ldaps://") or settings.ldap_use_starttls: + tls = Tls(validate=ssl.CERT_REQUIRED if settings.ldap_verify_tls else ssl.CERT_NONE) + self._server = Server(settings.ldap_uri, use_ssl=settings.ldap_uri.startswith("ldaps://"), get_info=ALL, tls=tls) + + def _connect(self, *, bind_dn: str | None = None, password: str | None = None) -> Connection: + conn = Connection(self._server, user=bind_dn, password=password, auto_bind=False) + conn.open() + if settings.ldap_use_starttls and self._server.ssl is False: + conn.start_tls() + conn.bind() + return conn + + def _service_conn(self) -> Connection: + return self._connect(bind_dn=settings.ldap_bind_dn, password=settings.ldap_bind_password) + + def find_user_dn(self, username: str) -> str | None: + if not settings.ldap_base_dn: + return None + conn = self._service_conn() + try: + search_filter = settings.ldap_user_filter.format(username=username) + conn.search(settings.ldap_base_dn, search_filter, attributes=["dn"]) + if not conn.entries: + return None + return conn.entries[0].entry_dn + finally: + conn.unbind() + + def authenticate(self, username: str, password: str) -> dict[str, Any] | None: + user_dn = self.find_user_dn(username) + if not user_dn: + return None + try: + conn = self._connect(bind_dn=user_dn, password=password) + conn.unbind() + return {"user_dn": user_dn} + except Exception: + return None + + def get_user_groups(self, *, user_dn: str, username: str) -> list[dict[str, str]]: + if not settings.ldap_base_dn: + return [] + conn = self._service_conn() + try: + search_filter = settings.ldap_group_filter.format(user_dn=user_dn, username=username) + conn.search(settings.ldap_base_dn, search_filter, attributes=["cn"]) + results: list[dict[str, str]] = [] + for entry in conn.entries: + dn = entry.entry_dn + name = "" + try: + name = str(entry.cn.value) if hasattr(entry, "cn") else "" + except Exception: + name = "" + results.append({"dn": dn, "name": name or dn}) + return results + finally: + conn.unbind() diff --git a/app/security/ldap_sync.py b/app/security/ldap_sync.py new file mode 100644 index 0000000..fae746f --- /dev/null +++ b/app/security/ldap_sync.py @@ -0,0 +1,67 @@ +from __future__ import annotations + +from sqlalchemy import select + +from app.db.engine import get_session +from app.db.models import LdapGroup, LdapGroupRole, Role, User +from app.security.ldap_client import LdapClient + + +def _ensure_groups(session, groups: list[dict[str, str]]) -> list[LdapGroup]: + existing = { + g.dn: g for g in session.scalars(select(LdapGroup).where(LdapGroup.dn.in_([g["dn"] for g in groups]))) + } + results: list[LdapGroup] = [] + for g in groups: + if g["dn"] in existing: + obj = existing[g["dn"]] + if g["name"] and obj.name != g["name"]: + obj.name = g["name"] + session.add(obj) + results.append(obj) + else: + obj = LdapGroup(dn=g["dn"], name=g["name"]) + session.add(obj) + session.flush() + results.append(obj) + return results + + +def sync_user_ldap_roles(*, session, user: User, username: str, user_dn: str) -> None: + client = LdapClient() + groups = client.get_user_groups(user_dn=user_dn, username=username) + group_objs = _ensure_groups(session, groups) + if not group_objs: + user.roles = [] + session.add(user) + return + + group_ids = [g.id for g in group_objs] + role_ids = list( + session.scalars(select(LdapGroupRole.role_id).where(LdapGroupRole.ldap_group_id.in_(group_ids))) + ) + if not role_ids: + user.roles = [] + session.add(user) + return + roles = list(session.scalars(select(Role).where(Role.id.in_(role_ids)))) + user.roles = roles + session.add(user) + + +def sync_all_ldap_users() -> int: + db = get_session() + client = LdapClient() + updated = 0 + try: + users = list(db.scalars(select(User).where(User.is_ldap.is_(True)))) + for user in users: + user_dn = client.find_user_dn(user.username) + if not user_dn: + continue + sync_user_ldap_roles(session=db, user=user, username=user.username, user_dn=user_dn) + updated += 1 + db.commit() + return updated + finally: + db.close() diff --git a/app/security/permissions.py b/app/security/permissions.py new file mode 100644 index 0000000..efa7fa5 --- /dev/null +++ b/app/security/permissions.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from sqlalchemy import select + +from app.db.engine import get_session +from app.db.models import Permission, Role, User, role_permissions, user_roles +from app.security.session import get_current_user + + +def _load_user_permissions(session, user: User) -> set[str]: + stmt = ( + select(Permission.code) + .select_from(Permission) + .join(role_permissions, Permission.id == role_permissions.c.permission_id) + .join(Role, Role.id == role_permissions.c.role_id) + .join(user_roles, Role.id == user_roles.c.role_id) + .where(user_roles.c.user_id == user.id) + ) + return {code for code in session.scalars(stmt)} + + +def user_has_permission(session, user: User, code: str) -> bool: + if user.is_superuser: + return True + if not code: + return True + perms = _load_user_permissions(session, user) + return code in perms + + +def request_has_permission(request, code: str) -> bool: + user = get_current_user(request) + if not user: + return False + if user.is_superuser: + return True + if not code: + return True + + if hasattr(request.state, "permissions"): + perms = request.state.permissions + else: + db = get_session() + try: + perms = _load_user_permissions(db, user) + request.state.permissions = perms + finally: + db.close() + return code in perms + + +def table_permission_code(table: str, action: str) -> str: + return f"table:{table}:{action}" + + +def button_permission_code(code: str) -> str: + return f"button:{code}" diff --git a/app/security/session.py b/app/security/session.py new file mode 100644 index 0000000..810386f --- /dev/null +++ b/app/security/session.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +from datetime import datetime, timedelta +from uuid import uuid4 + +from fastapi import Request, Response +from sqlalchemy import delete, select + +from app.core.config import settings +from app.db.engine import get_session +from app.db.models import Session + + +SESSION_COOKIE_NAME = "session_id" + + +def _now_utc() -> datetime: + return datetime.utcnow() + + +def create_session(user_id: int, request: Request) -> str: + session_id = uuid4().hex + expires_at = _now_utc() + timedelta(minutes=settings.session_expiry_minutes) + db = get_session() + try: + record = Session( + id=session_id, + user_id=user_id, + expires_at=expires_at, + ip=request.client.host if request.client else "", + user_agent=request.headers.get("User-Agent", ""), + ) + db.add(record) + db.commit() + finally: + db.close() + return session_id + + +def delete_session(session_id: str) -> None: + db = get_session() + try: + db.execute(delete(Session).where(Session.id == session_id)) + db.commit() + finally: + db.close() + + +def set_session_cookie(response: Response, session_id: str) -> None: + response.set_cookie( + SESSION_COOKIE_NAME, + session_id, + httponly=True, + samesite="lax", + max_age=settings.session_expiry_minutes * 60, + ) + + +def clear_session_cookie(response: Response) -> None: + response.delete_cookie(SESSION_COOKIE_NAME) + + +def get_current_user(request: Request) -> User | None: + if hasattr(request.state, "user"): + return request.state.user + + session_id = request.cookies.get(SESSION_COOKIE_NAME) + if not session_id: + request.state.user = None + return None + + db = get_session() + try: + record = db.scalar(select(Session).where(Session.id == session_id)) + if not record: + request.state.user = None + return None + if record.expires_at <= _now_utc(): + db.execute(delete(Session).where(Session.id == session_id)) + db.commit() + request.state.user = None + return None + user = db.get(User, record.user_id) + if not user or not user.is_active: + request.state.user = None + return None + request.state.user = user + return user + finally: + db.close() diff --git a/app/tasks/celery_app.py b/app/tasks/celery_app.py index be7a578..9be488e 100644 --- a/app/tasks/celery_app.py +++ b/app/tasks/celery_app.py @@ -21,12 +21,17 @@ celery_app.conf.update( include=[ "app.tasks.execute", "app.tasks.dispatcher", + "app.tasks.ldap_sync", ], beat_schedule={ "connecthub-dispatcher-tick-every-minute": { "task": "connecthub.dispatcher.tick", "schedule": 60.0, - } + }, + "connecthub-ldap-sync-every-5-minutes": { + "task": "connecthub.ldap.sync", + "schedule": 300.0, + }, }, worker_redirect_stdouts=False ) diff --git a/app/tasks/ldap_sync.py b/app/tasks/ldap_sync.py new file mode 100644 index 0000000..f56744f --- /dev/null +++ b/app/tasks/ldap_sync.py @@ -0,0 +1,9 @@ +from __future__ import annotations + +from app.security.ldap_sync import sync_all_ldap_users +from app.tasks.celery_app import celery_app + + +@celery_app.task(name="connecthub.ldap.sync") +def ldap_sync_task() -> int: + return sync_all_ldap_users() diff --git a/data/admin.pass b/data/admin.pass new file mode 100644 index 0000000..6f50180 --- /dev/null +++ b/data/admin.pass @@ -0,0 +1 @@ +ntpwKPBXc3w2nydPc4N-JQ diff --git a/data/logs/connecthub.log b/data/logs/connecthub.log index 777681e..7b7e2b3 100644 --- a/data/logs/connecthub.log +++ b/data/logs/connecthub.log @@ -4248,3 +4248,1915 @@ sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table job_logs has n 2026-01-09 00:47:11 INFO celery.app.trace Task connecthub.dispatcher.tick[160334bc-9dec-4d22-ba6b-8216ef856f4e] succeeded in 0.039360783994197845s: {'triggered': 0} 2026-01-09 00:48:11 INFO celery.app.trace Task connecthub.dispatcher.tick[85bd01f8-a097-49fe-b7be-4c8acd203104] succeeded in 0.018752190022496507s: {'triggered': 0} 2026-01-09 00:49:11 INFO celery.app.trace Task connecthub.dispatcher.tick[f00d8c05-8dcd-42ea-8b46-9b5439798b3b] succeeded in 0.01244172899168916s: {'triggered': 0} +2026-01-16 08:35:30 INFO celery.app.trace Task connecthub.dispatcher.tick[de8d7103-f8c1-470f-866f-142d5d7ff13d] succeeded in 0.06242709000071045s: {'triggered': 0} +2026-01-16 08:37:22 INFO celery.app.trace Task connecthub.dispatcher.tick[e1fe48fc-5c4c-4161-bf65-79be9340599f] succeeded in 0.167376023993711s: {'triggered': 0} +2026-01-16 08:38:23 INFO celery.app.trace Task connecthub.dispatcher.tick[ceed3c3d-db93-47d1-9974-7aeba423c40c] succeeded in 0.12588633100676816s: {'triggered': 0} +2026-01-16 08:39:22 INFO celery.app.trace Task connecthub.dispatcher.tick[ffa59060-3c6b-49df-bfd3-3284bb05ec21] succeeded in 0.03754790801031049s: {'triggered': 0} +2026-01-16 08:40:22 INFO celery.app.trace Task connecthub.dispatcher.tick[13a043e1-8cf7-42f8-a552-df6d8d4f77bd] succeeded in 0.018981974993948825s: {'triggered': 0} +2026-01-16 08:41:22 INFO celery.app.trace Task connecthub.dispatcher.tick[65425a65-001d-4500-b2eb-04a93596c57e] succeeded in 0.03298527898732573s: {'triggered': 0} +2026-01-16 08:43:16 INFO celery.app.trace Task connecthub.dispatcher.tick[880b3d82-7e33-4f8c-a84b-9b8f0cadccb8] succeeded in 0.11326471099164337s: {'triggered': 0} +2026-01-16 08:44:15 INFO celery.app.trace Task connecthub.dispatcher.tick[9a4eea51-2c8f-43fd-95ac-00f8e493945f] succeeded in 0.02267143399512861s: {'triggered': 0} +2026-01-16 08:45:15 INFO celery.app.trace Task connecthub.dispatcher.tick[834c6286-78a5-41d1-9048-5f893da32cd8] succeeded in 0.03101773399976082s: {'triggered': 0} +2026-01-16 08:46:15 INFO celery.app.trace Task connecthub.dispatcher.tick[b4fba2f4-fffd-4234-a054-b35ce4c7f33a] succeeded in 0.01098062600067351s: {'triggered': 0} +2026-01-16 08:47:15 INFO celery.app.trace Task connecthub.dispatcher.tick[76d6180f-9797-446d-8f85-e7a3982a7f62] succeeded in 0.03161373399780132s: {'triggered': 0} +2026-01-16 08:48:15 INFO celery.app.trace Task connecthub.dispatcher.tick[3f676e2d-a6a1-46b5-80af-1956d8654421] succeeded in 0.01355191100446973s: {'triggered': 0} +2026-01-16 08:49:16 INFO celery.app.trace Task connecthub.dispatcher.tick[9e259022-eedb-453e-bd55-7aa50fe44161] succeeded in 0.05761083899415098s: {'triggered': 0} +2026-01-16 08:50:16 INFO celery.app.trace Task connecthub.dispatcher.tick[eea5db4c-d9b2-4927-bdc5-12ca90634cf3] succeeded in 0.08705702700535767s: {'triggered': 0} +2026-01-16 08:51:17 INFO celery.app.trace Task connecthub.dispatcher.tick[89b37d44-ffc5-4d6d-a02f-31f0ee1d77ff] succeeded in 0.2009808319999138s: {'triggered': 0} +2026-01-16 08:52:17 INFO celery.app.trace Task connecthub.dispatcher.tick[465fd9d3-078e-494d-8c4f-75ab6712fb0e] succeeded in 0.02533241499622818s: {'triggered': 0} +2026-01-16 08:53:17 INFO celery.app.trace Task connecthub.dispatcher.tick[9f3c4dec-0fd8-4ecf-8d3a-60c7ec37ed55] succeeded in 0.3822059049998643s: {'triggered': 0} +2026-01-16 08:54:17 INFO celery.app.trace Task connecthub.dispatcher.tick[10c6d5ca-4fb5-4cc6-a0a7-900b5709c552] succeeded in 0.047126562989433296s: {'triggered': 0} +2026-01-16 08:55:50 INFO celery.app.trace Task connecthub.dispatcher.tick[a5c8d74e-526d-4914-90dc-0955f045bb15] succeeded in 0.1414577730029123s: {'triggered': 0} +2026-01-16 08:56:50 INFO celery.app.trace Task connecthub.dispatcher.tick[04569e04-09f9-4638-b779-dd7d1e361118] succeeded in 0.007502421998651698s: {'triggered': 0} +2026-01-16 08:57:50 INFO celery.app.trace Task connecthub.dispatcher.tick[d9491d51-0877-4ebc-ab9f-a751af81fb89] succeeded in 0.013269885996123776s: {'triggered': 0} +2026-01-16 09:00:08 INFO celery.app.trace Task connecthub.dispatcher.tick[7f8fdb74-a3af-44e8-aeb8-8e74df9f029c] succeeded in 0.022188267001183704s: {'triggered': 0} +2026-01-16 09:01:08 INFO celery.app.trace Task connecthub.dispatcher.tick[e629833e-4677-435a-9427-e819489b2d63] succeeded in 0.012074468002538197s: {'triggered': 0} +2026-01-16 09:02:08 INFO celery.app.trace Task connecthub.dispatcher.tick[50576ff5-1fbd-438b-a276-7a30f75889e8] succeeded in 0.00926767400233075s: {'triggered': 0} +2026-01-16 09:03:08 INFO celery.app.trace Task connecthub.dispatcher.tick[0886f696-d18b-4094-819e-e4ceea14b747] succeeded in 0.012293552004848607s: {'triggered': 0} +2026-01-16 09:04:08 INFO celery.app.trace Task connecthub.dispatcher.tick[415e548e-b690-48ca-aa0f-3839eeadba7f] succeeded in 0.01169021699752193s: {'triggered': 0} +2026-01-16 09:05:08 INFO celery.app.trace Task connecthub.ldap.sync[993c31bf-704a-43cc-a4e1-ede5ef5a09d3] succeeded in 0.014047011005459353s: 0 +2026-01-16 09:05:08 INFO celery.app.trace Task connecthub.dispatcher.tick[464b1fb5-ea85-40d1-b0e9-158d90f3b997] succeeded in 0.018946680997032672s: {'triggered': 0} +2026-01-16 09:06:08 INFO celery.app.trace Task connecthub.dispatcher.tick[a72278e5-445b-439c-ab5b-515d19d82ce3] succeeded in 0.011731092003174126s: {'triggered': 0} +2026-01-16 09:07:08 INFO celery.app.trace Task connecthub.dispatcher.tick[d66da3a9-3fc7-4c91-9ab1-229c1c37f479] succeeded in 0.006735339004080743s: {'triggered': 0} +2026-01-16 09:08:08 INFO celery.app.trace Task connecthub.dispatcher.tick[d5913ff6-44cc-4ab7-9451-b6df2bc4a5cf] succeeded in 0.01215959299588576s: {'triggered': 0} +2026-01-16 09:09:08 INFO celery.app.trace Task connecthub.dispatcher.tick[c84f1a7e-6bbf-4f64-85a0-35ce498ab5b8] succeeded in 0.02760793898778502s: {'triggered': 0} +2026-01-16 09:10:08 INFO celery.app.trace Task connecthub.ldap.sync[a7691dec-6222-4e3c-a759-831cbd0fa8e7] succeeded in 0.01262388500617817s: 0 +2026-01-16 09:10:08 INFO celery.app.trace Task connecthub.dispatcher.tick[bd4eeae7-4595-4f66-af97-d9f60a89c380] succeeded in 0.012605259995325468s: {'triggered': 0} +2026-01-16 09:11:08 INFO celery.app.trace Task connecthub.dispatcher.tick[8a54a60c-49e1-420e-b304-5011c346a26d] succeeded in 0.014334613006212749s: {'triggered': 0} +2026-01-16 09:12:08 INFO celery.app.trace Task connecthub.dispatcher.tick[1a36cf2c-bbb5-4f44-aa51-09afca6f242b] succeeded in 0.012129277994972654s: {'triggered': 0} +2026-01-16 09:13:08 INFO celery.app.trace Task connecthub.dispatcher.tick[6fdc5885-70c4-4ada-b211-21d9354b5d04] succeeded in 0.015803614995093085s: {'triggered': 0} +2026-01-16 09:14:08 INFO celery.app.trace Task connecthub.dispatcher.tick[f0a168fe-b4ad-4856-b0b3-cc6d5659e04d] succeeded in 0.007896556999185123s: {'triggered': 0} +2026-01-16 09:15:08 INFO celery.app.trace Task connecthub.ldap.sync[998307ef-0a27-4464-a7a3-d6d780876522] succeeded in 0.024173172991140746s: 0 +2026-01-16 09:15:08 INFO celery.app.trace Task connecthub.dispatcher.tick[830ae4a9-e39e-4ab6-8b38-28bc100bf924] succeeded in 0.01730311800201889s: {'triggered': 0} +2026-01-16 09:16:08 INFO celery.app.trace Task connecthub.dispatcher.tick[7f05ca2e-01fc-4828-b522-3215b693f08e] succeeded in 0.016806946994620375s: {'triggered': 0} +2026-01-16 09:17:08 INFO celery.app.trace Task connecthub.dispatcher.tick[58e33850-32d5-4ab8-a8bd-3778d48cbf30] succeeded in 0.013313141011167318s: {'triggered': 0} +2026-01-16 09:18:08 INFO celery.app.trace Task connecthub.dispatcher.tick[9f3a76d7-68ab-4a3c-b63a-b891f40db1fc] succeeded in 0.011838538004667498s: {'triggered': 0} +2026-01-16 09:19:08 INFO celery.app.trace Task connecthub.dispatcher.tick[19975e6a-a5dd-41bb-989f-76b31f3d617f] succeeded in 0.0036615540011553094s: {'triggered': 0} +2026-01-16 09:20:08 INFO celery.app.trace Task connecthub.ldap.sync[394c5293-175e-44bf-8821-bc12d5509346] succeeded in 0.007567438995465636s: 0 +2026-01-16 09:20:08 INFO celery.app.trace Task connecthub.dispatcher.tick[fcf30c86-7b53-481b-a6a9-1d02835a86e8] succeeded in 0.012129701994126663s: {'triggered': 0} +2026-01-16 09:21:08 INFO celery.app.trace Task connecthub.dispatcher.tick[858c84e0-c26f-4e73-b614-4552ea622c1a] succeeded in 0.016954965991317295s: {'triggered': 0} +2026-01-16 09:22:08 INFO celery.app.trace Task connecthub.dispatcher.tick[a8e9939a-a84c-448d-a33b-7bed468f84c3] succeeded in 0.009654992987634614s: {'triggered': 0} +2026-01-16 09:23:08 INFO celery.app.trace Task connecthub.dispatcher.tick[eac3a230-f70a-4d12-83f0-96c2b93276fd] succeeded in 0.004254181985743344s: {'triggered': 0} +2026-01-16 09:24:08 INFO celery.app.trace Task connecthub.dispatcher.tick[ba5c263a-698c-4fb9-97d1-be97b46687dc] succeeded in 0.004835928993998095s: {'triggered': 0} +2026-01-16 09:25:08 INFO celery.app.trace Task connecthub.ldap.sync[2c11ec61-0a3f-4721-a2f0-23d8151e855b] succeeded in 0.03164103900780901s: 0 +2026-01-16 09:25:08 INFO celery.app.trace Task connecthub.dispatcher.tick[ae494442-cf80-4286-a035-f894819b19ee] succeeded in 0.028790031996322796s: {'triggered': 0} +2026-01-16 09:26:08 INFO celery.app.trace Task connecthub.dispatcher.tick[0ff47f2d-8895-44e1-87fe-ca426c56c980] succeeded in 0.00893984800495673s: {'triggered': 0} +2026-01-16 09:27:08 INFO celery.app.trace Task connecthub.dispatcher.tick[5deb51fe-51a2-42ee-ad89-bd1f28b47a14] succeeded in 0.00747580399911385s: {'triggered': 0} +2026-01-16 09:28:08 INFO celery.app.trace Task connecthub.dispatcher.tick[6a942b5c-88be-4562-831a-b8c1cd5a7c81] succeeded in 0.005542718994547613s: {'triggered': 0} +2026-01-16 09:29:08 INFO celery.app.trace Task connecthub.dispatcher.tick[b724a9b1-3570-429d-a868-d4a72b00bf5d] succeeded in 0.007729472010396421s: {'triggered': 0} +2026-01-16 09:30:08 INFO celery.app.trace Task connecthub.ldap.sync[566221c5-b656-4e36-ae32-cf4cdd511540] succeeded in 0.010442269005579874s: 0 +2026-01-16 09:30:08 INFO celery.app.trace Task connecthub.dispatcher.tick[0ff361e8-24b7-40c1-b94f-6064f821ecf2] succeeded in 0.01692253000510391s: {'triggered': 0} +2026-01-16 09:31:08 INFO celery.app.trace Task connecthub.dispatcher.tick[eb253b39-b69c-4e4e-be80-02c2a6c98b80] succeeded in 0.0031965550006134436s: {'triggered': 0} +2026-01-16 09:32:08 INFO celery.app.trace Task connecthub.dispatcher.tick[060ab2ca-fa94-4a24-a4a8-e77d97a4b6cc] succeeded in 0.011410421997425146s: {'triggered': 0} +2026-01-16 09:33:08 INFO celery.app.trace Task connecthub.dispatcher.tick[0d9e2b8e-f319-4099-858a-ffb4e888c9aa] succeeded in 0.00788233800267335s: {'triggered': 0} +2026-01-16 09:34:08 INFO celery.app.trace Task connecthub.dispatcher.tick[73a42add-0fcc-4d2b-94fd-42ac2d37db9e] succeeded in 0.01867210998898372s: {'triggered': 0} +2026-01-16 09:35:08 INFO celery.app.trace Task connecthub.ldap.sync[05a85fbd-7089-4d21-8159-4907bf62a839] succeeded in 0.03930681500060018s: 0 +2026-01-16 09:35:08 INFO celery.app.trace Task connecthub.dispatcher.tick[de3fd22a-18a6-4bfd-ad8a-3c87ee6f7485] succeeded in 0.0998864190041786s: {'triggered': 0} +2026-01-16 09:36:08 INFO celery.app.trace Task connecthub.dispatcher.tick[c27a1bbb-d697-4759-95d2-32b6cde4e263] succeeded in 0.020872328997938894s: {'triggered': 0} +2026-01-16 09:37:08 INFO celery.app.trace Task connecthub.dispatcher.tick[18f27d58-e1f6-4d24-b680-ded19884d5bf] succeeded in 0.010326622999855317s: {'triggered': 0} +2026-01-16 09:38:08 INFO celery.app.trace Task connecthub.dispatcher.tick[6dea966f-4b00-4099-8f29-e0a23073262c] succeeded in 0.018611648003570735s: {'triggered': 0} +2026-01-16 09:39:08 INFO celery.app.trace Task connecthub.dispatcher.tick[d0b3d63d-0be6-45a9-a417-6101089f8d90] succeeded in 0.012870078993728384s: {'triggered': 0} +2026-01-16 09:40:08 INFO celery.app.trace Task connecthub.ldap.sync[a5c99684-fd00-47d8-9342-0128089f2d8b] succeeded in 0.01688092500262428s: 0 +2026-01-16 09:40:08 INFO celery.app.trace Task connecthub.dispatcher.tick[71d3903a-caec-410f-8165-f7d53342eb50] succeeded in 0.01635684000211768s: {'triggered': 0} +2026-01-16 09:41:08 INFO celery.app.trace Task connecthub.dispatcher.tick[581e11a7-0cbe-464a-ae6b-aa26e7d18c57] succeeded in 0.014904452007613145s: {'triggered': 0} +2026-01-16 09:42:08 INFO celery.app.trace Task connecthub.dispatcher.tick[8f339ac3-2673-4882-a2b2-bfd7236fdc3f] succeeded in 0.011385777004761621s: {'triggered': 0} +2026-01-16 09:43:08 INFO celery.app.trace Task connecthub.dispatcher.tick[7a62b3ea-7c0b-4f63-bdff-d6769ec12135] succeeded in 0.023953239011461847s: {'triggered': 0} +2026-01-16 09:44:08 INFO celery.app.trace Task connecthub.dispatcher.tick[cdc38207-9fdd-482b-98f0-01713a0042cb] succeeded in 0.00842893599474337s: {'triggered': 0} +2026-01-16 09:45:08 INFO celery.app.trace Task connecthub.ldap.sync[0c112e6b-a852-4467-8e4e-4de438046020] succeeded in 0.010178855998674408s: 0 +2026-01-16 09:45:08 INFO celery.app.trace Task connecthub.dispatcher.tick[c104187f-af84-4789-a405-e4d0f8b64a29] succeeded in 0.009778730003745295s: {'triggered': 0} +2026-01-16 09:46:08 INFO celery.app.trace Task connecthub.dispatcher.tick[779e9876-9d0a-42f2-a2f9-77d9f4b896ba] succeeded in 0.004873636004049331s: {'triggered': 0} +2026-01-16 09:47:08 INFO celery.app.trace Task connecthub.dispatcher.tick[9324265c-db0c-4a1b-80e8-5a4dca965460] succeeded in 0.00155396199261304s: {'triggered': 0} +2026-01-16 09:48:08 INFO celery.app.trace Task connecthub.dispatcher.tick[cf3542f7-7df2-4279-9ad0-981dad4a01b4] succeeded in 0.009141814996837638s: {'triggered': 0} +2026-01-16 09:49:08 INFO celery.app.trace Task connecthub.dispatcher.tick[02a1213a-9e35-4567-b7a1-aef3c7563216] succeeded in 0.0028324640006758273s: {'triggered': 0} +2026-01-16 09:50:08 INFO celery.app.trace Task connecthub.ldap.sync[179ab87a-d280-4f93-b70c-c0fa045ce99b] succeeded in 0.010726427004556172s: 0 +2026-01-16 09:50:08 INFO celery.app.trace Task connecthub.dispatcher.tick[dccf014e-fb52-4d9c-9a06-e2908b5075d0] succeeded in 0.009494313999311998s: {'triggered': 0} +2026-01-16 09:51:08 INFO celery.app.trace Task connecthub.dispatcher.tick[bfb54a37-c44b-4f4f-b85d-bea0a6e69cc1] succeeded in 0.005596177987172268s: {'triggered': 0} +2026-01-16 09:52:08 INFO celery.app.trace Task connecthub.dispatcher.tick[9ed525e6-ec91-40e3-b478-18cb41ff634f] succeeded in 0.0033362100075464696s: {'triggered': 0} +2026-01-16 09:53:08 INFO celery.app.trace Task connecthub.dispatcher.tick[75693058-53b0-4e43-9442-121892bb1112] succeeded in 0.002966372005175799s: {'triggered': 0} +2026-01-16 09:54:08 INFO celery.app.trace Task connecthub.dispatcher.tick[396cbf2d-ff17-4d17-a4c4-e8d322a8b83e] succeeded in 0.016045144002418965s: {'triggered': 0} +2026-01-16 09:55:08 INFO celery.app.trace Task connecthub.ldap.sync[73e765bb-ba59-4ec7-a43d-2f934d2410d2] succeeded in 0.008592637997935526s: 0 +2026-01-16 09:55:08 INFO celery.app.trace Task connecthub.dispatcher.tick[532e63c3-3e7d-4438-a65e-2290f2df81e4] succeeded in 0.012825206998968497s: {'triggered': 0} +2026-01-16 09:56:08 INFO celery.app.trace Task connecthub.dispatcher.tick[fc016dd7-e5f2-456d-ac0e-ae77978af4e6] succeeded in 0.0072411459987051785s: {'triggered': 0} +2026-01-16 09:57:08 INFO celery.app.trace Task connecthub.dispatcher.tick[3e15fe12-ccab-42b6-a128-41304bed4721] succeeded in 0.004675137999583967s: {'triggered': 0} +2026-01-16 09:58:08 INFO celery.app.trace Task connecthub.dispatcher.tick[80cb5276-4b65-43d3-b07e-9d4533089830] succeeded in 0.009338532006950118s: {'triggered': 0} +2026-01-16 09:59:08 INFO celery.app.trace Task connecthub.dispatcher.tick[d2735688-45d3-47e9-9164-c5e136a912f8] succeeded in 0.003119676999631338s: {'triggered': 0} +2026-01-16 10:00:08 INFO celery.app.trace Task connecthub.dispatcher.tick[dd4b77a7-a251-46b7-a517-4fac11f81ebd] succeeded in 0.02066949500294868s: {'triggered': 0} +2026-01-16 10:00:08 INFO celery.app.trace Task connecthub.ldap.sync[c98998c6-287d-47e3-aa58-573acebb560a] succeeded in 0.023753519999445416s: 0 +2026-01-16 10:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[350db6d5-c470-4bca-a4a1-3b03733eb426] succeeded in 0.021066697998321615s: {'triggered': 0} +2026-01-16 10:05:08 INFO celery.app.trace Task connecthub.ldap.sync[f64d4b04-9fde-45d4-9972-b18fe3e2b867] succeeded in 0.018264020996866748s: 0 +2026-01-16 10:16:24 INFO celery.app.trace Task connecthub.ldap.sync[5648bf07-357c-4c8e-b640-d9ac00e93203] succeeded in 0.013419380004052073s: 0 +2026-01-16 10:16:24 INFO celery.app.trace Task connecthub.dispatcher.tick[7daf4e6b-62d2-47c5-a59c-a1016ba1f8e2] succeeded in 0.0139199229888618s: {'triggered': 0} +2026-01-16 10:17:24 INFO celery.app.trace Task connecthub.dispatcher.tick[8f4aa323-d4d6-4325-942f-5512eb9c8435] succeeded in 0.012425584005541168s: {'triggered': 0} +2026-01-16 10:18:24 INFO celery.app.trace Task connecthub.dispatcher.tick[b9beb09b-14af-4672-9a80-d7fb46bbec60] succeeded in 0.010008075987570919s: {'triggered': 0} +2026-01-16 10:19:24 INFO celery.app.trace Task connecthub.dispatcher.tick[b3f3e27b-c41d-4dd3-85c0-0644361ef6fc] succeeded in 0.014885385011439212s: {'triggered': 0} +2026-01-16 10:20:24 INFO celery.app.trace Task connecthub.dispatcher.tick[47e41fd7-ca23-4684-9729-bc54a0855c87] succeeded in 0.018817564996425062s: {'triggered': 0} +2026-01-16 10:21:24 INFO celery.app.trace Task connecthub.ldap.sync[2eb1e4a6-23da-48f1-ac7c-aa66ccb66c66] succeeded in 0.02650267499848269s: 0 +2026-01-16 10:21:24 INFO celery.app.trace Task connecthub.dispatcher.tick[a2adec0b-bf90-49f4-9b89-95249484bc4c] succeeded in 0.02020248700864613s: {'triggered': 0} +2026-01-16 10:22:24 INFO celery.app.trace Task connecthub.dispatcher.tick[1e081f13-ebb3-432b-9f99-5eb82ea225b9] succeeded in 0.028396473004249856s: {'triggered': 0} +2026-01-16 10:23:24 INFO celery.app.trace Task connecthub.dispatcher.tick[fce2dea4-34d6-46de-8a35-4940014ef6ad] succeeded in 0.012179041994386353s: {'triggered': 0} +2026-01-16 10:24:24 INFO celery.app.trace Task connecthub.dispatcher.tick[120f36e9-a058-46a3-a44b-9eaa807f2e56] succeeded in 0.011022332997526973s: {'triggered': 0} +2026-01-16 10:25:24 INFO celery.app.trace Task connecthub.dispatcher.tick[847cce04-1c7c-4688-bc08-e84873e12a4e] succeeded in 0.012464880011975765s: {'triggered': 0} +2026-01-16 10:26:24 INFO celery.app.trace Task connecthub.ldap.sync[864dfd0d-9fdd-4ca8-9f49-852484063df7] succeeded in 0.10469780898711178s: 0 +2026-01-16 10:26:24 INFO celery.app.trace Task connecthub.dispatcher.tick[eeb57bd3-5451-491f-84ae-ba0c87b5be62] succeeded in 0.11646368600486312s: {'triggered': 0} +2026-01-16 10:27:24 INFO celery.app.trace Task connecthub.dispatcher.tick[2e052311-72a7-4a44-9b65-3de137a3fc14] succeeded in 0.013493719001417048s: {'triggered': 0} +2026-01-16 10:28:24 INFO celery.app.trace Task connecthub.dispatcher.tick[5a5031fc-30bd-4c85-b917-1152d3de9103] succeeded in 0.012192130001494661s: {'triggered': 0} +2026-01-16 10:29:24 INFO celery.app.trace Task connecthub.dispatcher.tick[8bf55f1b-72a9-43d6-88e2-41227f2de31c] succeeded in 0.004622642998583615s: {'triggered': 0} +2026-01-16 10:30:24 INFO celery.app.trace Task connecthub.dispatcher.tick[526166de-02e0-4476-ace6-dc15584da969] succeeded in 0.023914424993563443s: {'triggered': 0} +2026-01-16 10:31:24 INFO celery.app.trace Task connecthub.ldap.sync[2e7d81ef-0c4a-4762-895e-f14fbba059b4] succeeded in 0.013743178002187051s: 0 +2026-01-16 10:31:24 INFO celery.app.trace Task connecthub.dispatcher.tick[36b1b610-3bf2-4466-b52a-b08ea0d7c8a5] succeeded in 0.002927262001321651s: {'triggered': 0} +2026-01-16 10:32:24 INFO celery.app.trace Task connecthub.dispatcher.tick[cd507e3f-0a2a-4e9b-8501-370ec8a93bd7] succeeded in 0.011239334999118s: {'triggered': 0} +2026-01-16 10:33:24 INFO celery.app.trace Task connecthub.dispatcher.tick[b2ed56e9-30f6-4536-8c6f-9bfaf20bd06a] succeeded in 0.010417292010970414s: {'triggered': 0} +2026-01-16 10:34:24 INFO celery.app.trace Task connecthub.dispatcher.tick[cd01ac0f-1ff7-4c76-b7d9-e4a1753dd81d] succeeded in 0.023336465994361788s: {'triggered': 0} +2026-01-16 10:35:24 INFO celery.app.trace Task connecthub.dispatcher.tick[20c9e9c8-d03b-4d95-966c-bbf8c01fd85a] succeeded in 0.01023666599940043s: {'triggered': 0} +2026-01-16 10:36:24 INFO celery.app.trace Task connecthub.ldap.sync[ff622900-2be0-4d4e-93f3-e09f03965c52] succeeded in 0.023123425999074243s: 0 +2026-01-16 10:36:24 INFO celery.app.trace Task connecthub.dispatcher.tick[d2008bec-ff63-497d-9f0f-3248a7ad496f] succeeded in 0.0027073030069004744s: {'triggered': 0} +2026-01-16 10:37:24 INFO celery.app.trace Task connecthub.dispatcher.tick[8a083bc0-b3eb-4a8c-8bc9-043738b3acd2] succeeded in 0.00997791400004644s: {'triggered': 0} +2026-01-16 10:38:24 INFO celery.app.trace Task connecthub.dispatcher.tick[105292e6-5d28-4bc0-abc9-8f9a18b807bc] succeeded in 0.010118956997757778s: {'triggered': 0} +2026-01-16 10:39:24 INFO celery.app.trace Task connecthub.dispatcher.tick[b90e4818-055d-4aad-b838-fc0e1090d961] succeeded in 0.0027956769918091595s: {'triggered': 0} +2026-01-16 10:40:24 INFO celery.app.trace Task connecthub.dispatcher.tick[edb79dd9-594a-42d6-b1b0-09874510fa70] succeeded in 0.017220276000443846s: {'triggered': 0} +2026-01-16 10:41:24 INFO celery.app.trace Task connecthub.ldap.sync[5f80dfef-3f6b-4126-b9dc-2f038140aee2] succeeded in 0.030421494011534378s: 0 +2026-01-16 10:41:24 INFO celery.app.trace Task connecthub.dispatcher.tick[7864af0a-da15-4a73-afbe-b28f8a1236d1] succeeded in 0.007305111997993663s: {'triggered': 0} +2026-01-16 10:42:24 INFO celery.app.trace Task connecthub.dispatcher.tick[94f7d684-0b0f-4dba-8250-c16eb33963cc] succeeded in 0.010996126002282836s: {'triggered': 0} +2026-01-16 10:43:24 INFO celery.app.trace Task connecthub.dispatcher.tick[eda1b975-aca3-4412-aadb-ff67fe15b513] succeeded in 0.012700965991825797s: {'triggered': 0} +2026-01-16 10:44:24 INFO celery.app.trace Task connecthub.dispatcher.tick[fa757571-6bfa-44a7-ad2c-0989929cea40] succeeded in 0.012696215999312699s: {'triggered': 0} +2026-01-16 10:45:24 INFO celery.app.trace Task connecthub.dispatcher.tick[53d93fc4-2c50-4cde-8d0f-3a7ea9001bd9] succeeded in 0.027056355000240728s: {'triggered': 0} +2026-01-16 10:46:24 INFO celery.app.trace Task connecthub.ldap.sync[10a5f9a9-5c40-4ba0-8aed-324ae982871c] succeeded in 0.02432788599980995s: 0 +2026-01-16 10:46:24 INFO celery.app.trace Task connecthub.dispatcher.tick[8fb17227-f653-4f5c-8c6b-1c1cee3c7c5c] succeeded in 0.003995266000856645s: {'triggered': 0} +2026-01-16 10:47:24 INFO celery.app.trace Task connecthub.dispatcher.tick[dfd44d94-2e5d-4f06-8c94-d53fbdb7779e] succeeded in 0.023167298000771552s: {'triggered': 0} +2026-01-16 10:48:24 INFO celery.app.trace Task connecthub.dispatcher.tick[0ca81f09-9136-4d63-a171-19c24d2cc825] succeeded in 0.013983469994855113s: {'triggered': 0} +2026-01-16 10:49:24 INFO celery.app.trace Task connecthub.dispatcher.tick[e5fbfb54-9351-4621-8175-875596e757d5] succeeded in 0.007408445002511144s: {'triggered': 0} +2026-01-16 10:50:24 INFO celery.app.trace Task connecthub.dispatcher.tick[04a26a05-20e9-40ef-b9cd-6977986549d0] succeeded in 0.019928951995098032s: {'triggered': 0} +2026-01-16 10:51:24 INFO celery.app.trace Task connecthub.ldap.sync[9faebb7b-e413-4a84-bc61-e9a992a6dddf] succeeded in 0.00929124400136061s: 0 +2026-01-16 10:51:24 INFO celery.app.trace Task connecthub.dispatcher.tick[d21c112e-aff6-4b1d-b339-4ef4f852bbfc] succeeded in 0.006551149999722838s: {'triggered': 0} +2026-01-19 01:05:43 INFO celery.app.trace Task connecthub.ldap.sync[12f7d747-3797-4dbb-b93c-6aab678ed172] succeeded in 0.41206959399278276s: 0 +2026-01-19 01:05:43 INFO celery.app.trace Task connecthub.dispatcher.tick[307fad01-791e-4bc3-82a0-e4651b46f9a1] succeeded in 0.7626754520024406s: {'triggered': 0} +2026-01-19 01:06:43 INFO celery.app.trace Task connecthub.dispatcher.tick[23fc6346-836a-470b-af28-840713481ae1] succeeded in 0.02015691201086156s: {'triggered': 0} +2026-01-19 01:07:43 INFO celery.app.trace Task connecthub.dispatcher.tick[975fd72d-b95d-41f3-a28c-fbc23334329b] succeeded in 0.009819496001000516s: {'triggered': 0} +2026-01-19 01:08:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c9193933-e2b8-446e-903b-ca63d421aa6c] succeeded in 0.00479835199075751s: {'triggered': 0} +2026-01-19 01:09:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2d055fee-2ee7-46f6-adb2-fdd39d61ff10] succeeded in 0.015983352990588173s: {'triggered': 0} +2026-01-19 01:10:43 INFO celery.app.trace Task connecthub.dispatcher.tick[25a28cdb-0f08-42fa-b914-ac2593712006] succeeded in 0.024300927994772792s: {'triggered': 0} +2026-01-19 01:10:43 INFO celery.app.trace Task connecthub.ldap.sync[30e0dde7-1761-4851-8bec-f8ecd332e50b] succeeded in 0.013072008994640782s: 0 +2026-01-19 01:11:43 INFO celery.app.trace Task connecthub.dispatcher.tick[cd727709-e972-47d6-84e5-f6d37931a246] succeeded in 0.0038553069898625836s: {'triggered': 0} +2026-01-19 01:12:43 INFO celery.app.trace Task connecthub.dispatcher.tick[6cdce31a-b7c8-4e58-a8f3-5918e220172a] succeeded in 0.03630839000106789s: {'triggered': 0} +2026-01-19 01:13:43 INFO celery.app.trace Task connecthub.dispatcher.tick[f8fd200d-b6fe-44f2-88d0-136ec5a92429] succeeded in 0.030725160002475604s: {'triggered': 0} +2026-01-19 01:14:43 INFO celery.app.trace Task connecthub.dispatcher.tick[a089a14c-d637-42ea-870b-a5b4c311e9fe] succeeded in 0.013208884993218817s: {'triggered': 0} +2026-01-19 01:15:43 INFO celery.app.trace Task connecthub.ldap.sync[27a58af2-92cc-429d-bcf7-95bbff2acc85] succeeded in 0.01641118701081723s: 0 +2026-01-19 01:15:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c44290f7-8989-4ffa-b486-24893bbb03fc] succeeded in 0.01938428299035877s: {'triggered': 0} +2026-01-19 01:16:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2c0ed891-a67b-4430-9942-53a70f2d8138] succeeded in 0.030105234996881336s: {'triggered': 0} +2026-01-19 01:17:43 INFO celery.app.trace Task connecthub.dispatcher.tick[9a4878f2-f760-46f0-8804-3ad4c43f8292] succeeded in 0.015760737005621195s: {'triggered': 0} +2026-01-19 01:18:43 INFO celery.app.trace Task connecthub.dispatcher.tick[5946eabe-0118-4475-b0f0-0c9a572e7a7d] succeeded in 0.01233999099349603s: {'triggered': 0} +2026-01-19 01:19:43 INFO celery.app.trace Task connecthub.dispatcher.tick[9e1781bf-adbf-42f9-aa23-656411a54cc3] succeeded in 0.016418150989920832s: {'triggered': 0} +2026-01-19 01:20:43 INFO celery.app.trace Task connecthub.ldap.sync[1752c526-e947-45bf-af42-6bf4c3bad301] succeeded in 0.017345653992379084s: 0 +2026-01-19 01:20:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8c16eb62-e87b-4175-8fbc-8e62f1dfb4af] succeeded in 0.002994114998728037s: {'triggered': 0} +2026-01-19 01:21:43 INFO celery.app.trace Task connecthub.dispatcher.tick[a281cbc7-baed-4bf7-83a7-3340d9099d31] succeeded in 0.05019984199316241s: {'triggered': 0} +2026-01-19 01:22:43 INFO celery.app.trace Task connecthub.dispatcher.tick[96666381-07ae-4e7f-89e7-df1bd980eb75] succeeded in 0.016266567996353842s: {'triggered': 0} +2026-01-19 01:23:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c2df6a30-a757-4ae5-814d-d7c0e9395bdd] succeeded in 0.012998873004107736s: {'triggered': 0} +2026-01-19 01:24:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d55982b2-8b4a-4faa-aef9-24a7c58d6278] succeeded in 0.012506165992817841s: {'triggered': 0} +2026-01-19 01:25:43 INFO celery.app.trace Task connecthub.ldap.sync[ab44d74f-7e5f-4797-b301-f342d55049c7] succeeded in 0.019024392997380346s: 0 +2026-01-19 01:25:43 INFO celery.app.trace Task connecthub.dispatcher.tick[6cbae55f-e722-42b6-8eac-0bad4ad28e8d] succeeded in 0.0035616130044218153s: {'triggered': 0} +2026-01-19 01:26:43 INFO celery.app.trace Task connecthub.dispatcher.tick[bd5696e6-1b09-4de7-8576-82f9bf2a64ec] succeeded in 0.005805647000670433s: {'triggered': 0} +2026-01-19 01:27:43 INFO celery.app.trace Task connecthub.dispatcher.tick[9a35bff3-eb38-4601-9762-e5371a245e29] succeeded in 0.020311097003286704s: {'triggered': 0} +2026-01-19 01:28:43 INFO celery.app.trace Task connecthub.dispatcher.tick[ae9eaaaf-ad78-4384-a31f-09d5bac977f1] succeeded in 0.016435192999779247s: {'triggered': 0} +2026-01-19 01:29:43 INFO celery.app.trace Task connecthub.dispatcher.tick[5166733b-99a8-4f6d-aed3-41338caed7e9] succeeded in 0.01148566800111439s: {'triggered': 0} +2026-01-19 01:30:43 INFO celery.app.trace Task connecthub.ldap.sync[f37cd775-8295-4b7a-8e3c-771ebd7ca627] succeeded in 0.020392136997543275s: 0 +2026-01-19 01:30:43 INFO celery.app.trace Task connecthub.dispatcher.tick[348bc5f4-82fc-4081-81fc-02d07e704b82] succeeded in 0.00337207100528758s: {'triggered': 0} +2026-01-19 01:31:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e5d9316c-17f9-4784-8536-128bd589c049] succeeded in 0.011620125995250419s: {'triggered': 0} +2026-01-19 01:32:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2003dd7e-5832-41f9-8f85-98591625a796] succeeded in 0.016231400994001888s: {'triggered': 0} +2026-01-19 01:33:43 INFO celery.app.trace Task connecthub.dispatcher.tick[a380b089-aae0-40d3-8795-77c1d8159ba9] succeeded in 0.009945215002517216s: {'triggered': 0} +2026-01-19 01:34:43 INFO celery.app.trace Task connecthub.dispatcher.tick[960f7f5f-84cd-49b5-9269-dabc622b3cc9] succeeded in 0.02186321499175392s: {'triggered': 0} +2026-01-19 01:35:43 INFO celery.app.trace Task connecthub.ldap.sync[c6d5b2ca-409b-4072-b8e0-11426515ab56] succeeded in 0.028306150998105295s: 0 +2026-01-19 01:35:43 INFO celery.app.trace Task connecthub.dispatcher.tick[cd590478-0484-4f2d-864d-3be5564ac86a] succeeded in 0.006483643999672495s: {'triggered': 0} +2026-01-19 01:36:43 INFO celery.app.trace Task connecthub.dispatcher.tick[14e92bcb-e95e-4cba-b1d0-7400cace51fb] succeeded in 0.018323853000765666s: {'triggered': 0} +2026-01-19 01:37:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3a2c9a8e-8bf7-406e-851b-76752c2c0027] succeeded in 0.010213380999630317s: {'triggered': 0} +2026-01-19 01:38:43 INFO celery.app.trace Task connecthub.dispatcher.tick[1898f8b5-fd8a-4ec4-bae7-79f81bbbf5cb] succeeded in 0.01167016799445264s: {'triggered': 0} +2026-01-19 01:39:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c8edd540-0ad6-4352-b147-aed4758a397e] succeeded in 0.021657923993188888s: {'triggered': 0} +2026-01-19 01:40:43 INFO celery.app.trace Task connecthub.ldap.sync[2f4095fd-9e6d-49a1-8363-92b1e8dd7432] succeeded in 0.026548032998107374s: 0 +2026-01-19 01:40:43 INFO celery.app.trace Task connecthub.dispatcher.tick[809f40d2-ac68-434f-a672-8cea33232138] succeeded in 0.003023823010153137s: {'triggered': 0} +2026-01-19 01:41:43 INFO celery.app.trace Task connecthub.dispatcher.tick[29f12492-d231-453c-b048-a820944cf6ab] succeeded in 0.011396584988688119s: {'triggered': 0} +2026-01-19 01:42:43 INFO celery.app.trace Task connecthub.dispatcher.tick[5d908e86-56e7-42d0-82ef-b1581180806f] succeeded in 0.015792737001902424s: {'triggered': 0} +2026-01-19 01:43:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2b72a337-2934-42ae-a286-d48fae8fc72c] succeeded in 0.019166056998074055s: {'triggered': 0} +2026-01-19 01:44:43 INFO celery.app.trace Task connecthub.dispatcher.tick[10b2b72f-2f59-40db-a9c4-45c20f6d5b0e] succeeded in 0.02063030299905222s: {'triggered': 0} +2026-01-19 01:45:43 INFO celery.app.trace Task connecthub.ldap.sync[6aba1ccb-0c68-4da2-bc6b-7bae2aa4cce9] succeeded in 0.007734056009212509s: 0 +2026-01-19 01:45:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c36e7d34-01a1-42b2-87cb-bc2e21eecbcf] succeeded in 0.004347943002358079s: {'triggered': 0} +2026-01-19 01:46:43 INFO celery.app.trace Task connecthub.dispatcher.tick[68d3f526-5798-4efd-bd2f-ec18b222a282] succeeded in 0.017127523009548895s: {'triggered': 0} +2026-01-19 01:47:43 INFO celery.app.trace Task connecthub.dispatcher.tick[334b8edf-5848-4842-8ce1-5805ba874153] succeeded in 0.006087561007007025s: {'triggered': 0} +2026-01-19 01:48:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e76c8edc-5003-4784-9a62-344ccbef8c87] succeeded in 0.0062233119970187545s: {'triggered': 0} +2026-01-19 01:49:43 INFO celery.app.trace Task connecthub.dispatcher.tick[805490ab-5890-46d4-9c0b-fe6954bd1f78] succeeded in 0.013987158992676996s: {'triggered': 0} +2026-01-19 01:50:43 INFO celery.app.trace Task connecthub.ldap.sync[8ec5ca97-6276-4365-a0ad-b97da81eeadd] succeeded in 0.00668697600485757s: 0 +2026-01-19 01:50:43 INFO celery.app.trace Task connecthub.dispatcher.tick[1371539c-4de2-4bba-82a9-39bbcab25b8f] succeeded in 0.0033886540040839463s: {'triggered': 0} +2026-01-19 01:51:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c6ccf35e-cb18-427b-a203-9f2716bf0893] succeeded in 0.023459543008357286s: {'triggered': 0} +2026-01-19 01:52:43 INFO celery.app.trace Task connecthub.dispatcher.tick[68219a65-92bb-407a-9c97-a4c360e42201] succeeded in 0.006052576994989067s: {'triggered': 0} +2026-01-19 01:53:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e3be0f8e-4307-4679-acb2-25a3f370904f] succeeded in 0.008011279001948424s: {'triggered': 0} +2026-01-19 01:54:43 INFO celery.app.trace Task connecthub.dispatcher.tick[40bdc799-2551-4eb5-864e-ff33fc543aa1] succeeded in 0.0035986539878649637s: {'triggered': 0} +2026-01-19 01:55:43 INFO celery.app.trace Task connecthub.ldap.sync[50df8b4d-7768-48b7-9bcd-e8af32e53c6e] succeeded in 0.009578042998327874s: 0 +2026-01-19 01:55:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8e84e7f2-b929-4bf8-a885-f1a5577e95db] succeeded in 0.004646305998903699s: {'triggered': 0} +2026-01-19 01:56:43 INFO celery.app.trace Task connecthub.dispatcher.tick[da53e47d-fb44-4738-9bfd-29c039ab402a] succeeded in 0.002948615001514554s: {'triggered': 0} +2026-01-19 01:57:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3666add5-b650-402e-bb9d-2394048550c7] succeeded in 0.004196964000584558s: {'triggered': 0} +2026-01-19 01:58:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3ffdc85e-5aa3-497b-bd8a-4364c0c03850] succeeded in 0.005332779997843318s: {'triggered': 0} +2026-01-19 01:59:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c3b5938a-fc9a-4950-bdca-8453d2cb0bad] succeeded in 0.01365936899674125s: {'triggered': 0} +2026-01-19 02:00:43 INFO celery.app.trace Task connecthub.ldap.sync[d1ae2d5f-c2cb-42ce-870e-50aefd97b062] succeeded in 0.005934492000960745s: 0 +2026-01-19 02:00:43 INFO celery.app.trace Task connecthub.dispatcher.tick[04082b9f-00fb-4ab4-954a-0dd0e94dda2f] succeeded in 0.004233023995766416s: {'triggered': 0} +2026-01-19 02:01:43 INFO celery.app.trace Task connecthub.dispatcher.tick[f1cf3a9f-7111-4221-b314-d68428f448a5] succeeded in 0.00779931599390693s: {'triggered': 0} +2026-01-19 02:02:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d23d10a2-1efc-4e31-939e-58e05f08cce6] succeeded in 0.003613366003264673s: {'triggered': 0} +2026-01-19 02:03:43 INFO celery.app.trace Task connecthub.dispatcher.tick[4ed27a2b-510f-4045-9a01-5aeb7463d93f] succeeded in 0.006237191002583131s: {'triggered': 0} +2026-01-19 02:04:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c1c8e855-0626-4491-8653-4a9138ffb697] succeeded in 0.007069396000588313s: {'triggered': 0} +2026-01-19 02:05:43 INFO celery.app.trace Task connecthub.ldap.sync[1e1abcc7-d510-4f0b-a740-d61d7ff938d2] succeeded in 0.01256110800022725s: 0 +2026-01-19 02:05:43 INFO celery.app.trace Task connecthub.dispatcher.tick[55027e10-458e-437c-a86f-43b0659f550b] succeeded in 0.007557447999715805s: {'triggered': 0} +2026-01-19 02:06:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8b078f7a-a061-498e-b7aa-3b30a6ce3e68] succeeded in 0.003191579002304934s: {'triggered': 0} +2026-01-19 02:07:43 INFO celery.app.trace Task connecthub.dispatcher.tick[39dfd658-557a-4115-b286-b1eb2242697b] succeeded in 0.004033532997709699s: {'triggered': 0} +2026-01-19 02:08:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b1535544-7b24-4472-92a2-68d3933f1aa5] succeeded in 0.0050829060055548325s: {'triggered': 0} +2026-01-19 02:09:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2b57e947-fa10-464f-ab8b-c3c69099da06] succeeded in 0.010738734999904409s: {'triggered': 0} +2026-01-19 02:10:43 INFO celery.app.trace Task connecthub.ldap.sync[4215cb4e-265f-40ad-b298-65f7e8aee26b] succeeded in 0.014741778999450617s: 0 +2026-01-19 02:10:43 INFO celery.app.trace Task connecthub.dispatcher.tick[53aaac06-9ca2-4b34-abb2-d017528f5be4] succeeded in 0.0037980589986545965s: {'triggered': 0} +2026-01-19 02:11:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b600fb88-b03a-4922-a89b-5a6bd5f20100] succeeded in 0.0036505369935184717s: {'triggered': 0} +2026-01-19 02:12:43 INFO celery.app.trace Task connecthub.dispatcher.tick[10c85b40-343b-49f0-a8fa-3e3268dfdf0b] succeeded in 0.0036082340084249154s: {'triggered': 0} +2026-01-19 02:13:43 INFO celery.app.trace Task connecthub.dispatcher.tick[71ffc287-5174-451c-b1b4-4ee2af1c2f8a] succeeded in 0.003354079002747312s: {'triggered': 0} +2026-01-19 02:14:43 INFO celery.app.trace Task connecthub.dispatcher.tick[cc96e5fa-063e-41ed-9d81-747b379312a6] succeeded in 0.010816803987836465s: {'triggered': 0} +2026-01-19 02:15:43 INFO celery.app.trace Task connecthub.ldap.sync[7696aabd-51fe-4f71-a5e3-efb2dcf018fc] succeeded in 0.011440927002695389s: 0 +2026-01-19 02:15:43 INFO celery.app.trace Task connecthub.dispatcher.tick[7380d7c9-73df-46f4-89a3-8f56c74e4b2d] succeeded in 0.005241693987045437s: {'triggered': 0} +2026-01-19 02:16:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c3bbbbac-5311-40d6-bec6-123e0516323a] succeeded in 0.010155898999073543s: {'triggered': 0} +2026-01-19 02:17:43 INFO celery.app.trace Task connecthub.dispatcher.tick[eb1caf06-f55f-4c5e-b765-1a003b81a438] succeeded in 0.0059352819953346625s: {'triggered': 0} +2026-01-19 02:18:43 INFO celery.app.trace Task connecthub.dispatcher.tick[913b5f41-08f1-469c-bd7c-ae4ba74a1442] succeeded in 0.00869590399088338s: {'triggered': 0} +2026-01-19 02:19:43 INFO celery.app.trace Task connecthub.dispatcher.tick[21055ffe-006a-4b87-9f68-24da05abe034] succeeded in 0.027030043987906538s: {'triggered': 0} +2026-01-19 02:20:43 INFO celery.app.trace Task connecthub.ldap.sync[112e1e11-2e97-43d3-9c63-94b9c57d7b3a] succeeded in 0.013106730999425054s: 0 +2026-01-19 02:20:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b8ec1f1f-6d9b-4ff3-ba6c-cb4b7ca88607] succeeded in 0.0036081610014662147s: {'triggered': 0} +2026-01-19 02:21:43 INFO celery.app.trace Task connecthub.dispatcher.tick[524900a5-9486-4158-8d3b-f17a51479d07] succeeded in 0.003545244995621033s: {'triggered': 0} +2026-01-19 02:22:43 INFO celery.app.trace Task connecthub.dispatcher.tick[67919cdb-6eb9-4019-8bb7-d6fe5e0d9b87] succeeded in 0.013255854995804839s: {'triggered': 0} +2026-01-19 02:23:43 INFO celery.app.trace Task connecthub.dispatcher.tick[4294e32d-1fe9-4049-9639-b19be7588df0] succeeded in 0.006070408009691164s: {'triggered': 0} +2026-01-19 02:24:43 INFO celery.app.trace Task connecthub.dispatcher.tick[20b233ba-e317-4e37-a687-dabdb5b60ea9] succeeded in 0.008975445001851767s: {'triggered': 0} +2026-01-19 02:25:43 INFO celery.app.trace Task connecthub.ldap.sync[f5d02f2c-18c3-4820-9548-07f8329daf14] succeeded in 0.011638858006335795s: 0 +2026-01-19 02:25:43 INFO celery.app.trace Task connecthub.dispatcher.tick[41e304a3-455c-4101-9ce4-02fbde00b380] succeeded in 0.004411493995576166s: {'triggered': 0} +2026-01-19 02:26:43 INFO celery.app.trace Task connecthub.dispatcher.tick[158af873-e5c7-469d-af09-7e9fbc363bb8] succeeded in 0.010109650989761576s: {'triggered': 0} +2026-01-19 02:27:43 INFO celery.app.trace Task connecthub.dispatcher.tick[76caa1b7-8aa3-482e-b958-e5125dd36e48] succeeded in 0.002921370993135497s: {'triggered': 0} +2026-01-19 02:28:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e22c115a-f6e1-4b1e-bb7f-84cf2eda65e4] succeeded in 0.032396369002526626s: {'triggered': 0} +2026-01-19 02:29:43 INFO celery.app.trace Task connecthub.dispatcher.tick[1b66c72b-e8b9-46ba-a8fe-af8cb327e828] succeeded in 0.010012276994530112s: {'triggered': 0} +2026-01-19 02:30:43 INFO celery.app.trace Task connecthub.ldap.sync[ddea5158-8d94-4152-aa30-d47f9d29431f] succeeded in 0.011496524995891377s: 0 +2026-01-19 02:30:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e696e773-dca3-4fcc-8bb1-d9df01aa9c5c] succeeded in 0.0025574539904482663s: {'triggered': 0} +2026-01-19 02:31:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c9f6d2ed-9e19-44f6-a558-5c9ce5092858] succeeded in 0.023379298989311792s: {'triggered': 0} +2026-01-19 02:32:43 INFO celery.app.trace Task connecthub.dispatcher.tick[260596ee-4b4c-43c6-8d0e-eff269c89c37] succeeded in 0.01898709699162282s: {'triggered': 0} +2026-01-19 02:33:43 INFO celery.app.trace Task connecthub.dispatcher.tick[5435e8ce-af8c-4cff-99ee-3929449569e0] succeeded in 0.010324650997063145s: {'triggered': 0} +2026-01-19 02:34:43 INFO celery.app.trace Task connecthub.dispatcher.tick[0171dc91-97f3-4514-a643-22dcd7c7bfa8] succeeded in 0.018757637997623533s: {'triggered': 0} +2026-01-19 02:35:43 INFO celery.app.trace Task connecthub.ldap.sync[df44aec8-ac81-4475-aaef-7af44817a039] succeeded in 0.0144277700164821s: 0 +2026-01-19 02:35:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8b85d979-65a4-4408-80cd-a722e8d73eff] succeeded in 0.004705700994236395s: {'triggered': 0} +2026-01-19 02:36:43 INFO celery.app.trace Task connecthub.dispatcher.tick[82637e67-398d-481b-aa85-d6247715d370] succeeded in 0.0034691200125962496s: {'triggered': 0} +2026-01-19 02:37:43 INFO celery.app.trace Task connecthub.dispatcher.tick[0f4799dd-5bd5-454e-bffa-fa223405bb81] succeeded in 0.02025755200884305s: {'triggered': 0} +2026-01-19 02:38:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8ac01e76-6ed7-4734-bda8-7de30feb14df] succeeded in 0.015377352014183998s: {'triggered': 0} +2026-01-19 02:39:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3475cfbf-8dc0-44b5-aace-cd1de371935a] succeeded in 0.037887143989792094s: {'triggered': 0} +2026-01-19 02:40:43 INFO celery.app.trace Task connecthub.ldap.sync[e1745a3d-5e7e-4993-a73f-703c408d8898] succeeded in 0.028047479019733146s: 0 +2026-01-19 02:40:43 INFO celery.app.trace Task connecthub.dispatcher.tick[0b792f89-85f7-497e-8687-9f51ff415313] succeeded in 0.006048561976058409s: {'triggered': 0} +2026-01-19 02:41:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e77e5292-c475-4bd9-8eb9-bb874f53352a] succeeded in 0.011188067001057789s: {'triggered': 0} +2026-01-19 02:42:43 INFO celery.app.trace Task connecthub.dispatcher.tick[30f79639-da0a-4f1a-aa5e-c47dbeb8be60] succeeded in 0.014202483027474955s: {'triggered': 0} +2026-01-19 02:43:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b26ba530-4546-4dcd-ac4f-04b3cdc220c0] succeeded in 0.015530644013779238s: {'triggered': 0} +2026-01-19 02:44:43 INFO celery.app.trace Task connecthub.dispatcher.tick[86ec2c1a-2bc4-4185-8dfa-a3d6d86b4048] succeeded in 0.02117838300182484s: {'triggered': 0} +2026-01-19 02:45:43 INFO celery.app.trace Task connecthub.ldap.sync[4035b4c8-dd64-45ad-b3b6-3e8c98abee76] succeeded in 0.011134400003356859s: 0 +2026-01-19 02:45:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8cf13123-6174-4624-93f9-1c46fbf3fff5] succeeded in 0.006770990003133193s: {'triggered': 0} +2026-01-19 02:46:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d242c570-f4af-4f25-8d7f-4c33d4dbd0a5] succeeded in 0.010661399021046236s: {'triggered': 0} +2026-01-19 02:47:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3ee7cbff-1126-444f-ae3f-a2802fce9be6] succeeded in 0.01159075298346579s: {'triggered': 0} +2026-01-19 02:48:43 INFO celery.app.trace Task connecthub.dispatcher.tick[60772e0b-1585-47bd-8d9d-82f0006b7ba0] succeeded in 0.014093064004555345s: {'triggered': 0} +2026-01-19 02:49:43 INFO celery.app.trace Task connecthub.dispatcher.tick[303ceaa2-4ce1-4cec-b989-b65c1ece6efb] succeeded in 0.019511696009431034s: {'triggered': 0} +2026-01-19 02:50:43 INFO celery.app.trace Task connecthub.ldap.sync[3216b526-4cad-4bc0-ac71-954c4a098195] succeeded in 0.012095768994186074s: 0 +2026-01-19 02:50:43 INFO celery.app.trace Task connecthub.dispatcher.tick[4a33f72d-26c4-478a-a22e-9893232f4737] succeeded in 0.004001575987786055s: {'triggered': 0} +2026-01-19 02:51:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2644a0bc-fdb0-4b6f-8d9c-d62acb7754ec] succeeded in 0.024094330990919843s: {'triggered': 0} +2026-01-19 02:52:43 INFO celery.app.trace Task connecthub.dispatcher.tick[a1086697-6ba0-4eb5-8fd8-61479b90042e] succeeded in 0.005173048994038254s: {'triggered': 0} +2026-01-19 02:53:43 INFO celery.app.trace Task connecthub.dispatcher.tick[57c63979-5fd2-4407-82e0-7deee1822abb] succeeded in 0.025103617022978142s: {'triggered': 0} +2026-01-19 02:54:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b42d8bea-958b-41bb-ab96-72ae10422d30] succeeded in 0.005235382006503642s: {'triggered': 0} +2026-01-19 02:55:43 INFO celery.app.trace Task connecthub.ldap.sync[24b206fc-277d-4993-9b42-73e20f874148] succeeded in 0.014224686019588262s: 0 +2026-01-19 02:55:43 INFO celery.app.trace Task connecthub.dispatcher.tick[fa4f6dad-3da0-4c92-b752-5293d2445825] succeeded in 0.004529965022811666s: {'triggered': 0} +2026-01-19 02:56:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b149c006-5999-45c4-b8f5-f7bc633fe9e4] succeeded in 0.004958628007443622s: {'triggered': 0} +2026-01-19 02:57:43 INFO celery.app.trace Task connecthub.dispatcher.tick[cb611c10-1845-4e78-a2c1-341520b9e0cd] succeeded in 0.021878872998058796s: {'triggered': 0} +2026-01-19 02:58:43 INFO celery.app.trace Task connecthub.dispatcher.tick[72b22177-6dd1-4882-ad1b-fffdcdd2bde9] succeeded in 0.005080506991362199s: {'triggered': 0} +2026-01-19 02:59:43 INFO celery.app.trace Task connecthub.dispatcher.tick[72f23abe-e125-421b-9fe0-ab169e40fd60] succeeded in 0.014778234006371349s: {'triggered': 0} +2026-01-19 03:00:43 INFO celery.app.trace Task connecthub.ldap.sync[49f02bd0-f9a4-4510-bfc3-e2d9d2197c97] succeeded in 0.004483380995225161s: 0 +2026-01-19 03:00:43 INFO celery.app.trace Task connecthub.dispatcher.tick[67c73217-b50d-4fb7-adaf-cbb441e62985] succeeded in 0.002382587001193315s: {'triggered': 0} +2026-01-19 03:01:43 INFO celery.app.trace Task connecthub.dispatcher.tick[349c9cfa-2068-439d-a743-582a276342ae] succeeded in 0.017532366007799283s: {'triggered': 0} +2026-01-19 03:02:43 INFO celery.app.trace Task connecthub.dispatcher.tick[a66578a9-2eb4-44a2-8e77-c204e0cf389f] succeeded in 0.00686583700007759s: {'triggered': 0} +2026-01-19 03:03:43 INFO celery.app.trace Task connecthub.dispatcher.tick[732540af-13e3-494e-bd0b-1e069d853607] succeeded in 0.0077643349941354245s: {'triggered': 0} +2026-01-19 03:04:43 INFO celery.app.trace Task connecthub.dispatcher.tick[ec173761-844c-488b-848e-2afb8c05c188] succeeded in 0.0031542009965050966s: {'triggered': 0} +2026-01-19 03:05:43 INFO celery.app.trace Task connecthub.ldap.sync[fa6ba986-b17c-4abf-a522-66e3415673de] succeeded in 0.005015304021071643s: 0 +2026-01-19 03:05:43 INFO celery.app.trace Task connecthub.dispatcher.tick[67f94353-4d04-46fc-9e3f-c9089a6b90ae] succeeded in 0.0037590930005535483s: {'triggered': 0} +2026-01-19 03:06:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e045c81d-0f2e-46db-b529-3d17b5f92fac] succeeded in 0.005480763997184113s: {'triggered': 0} +2026-01-19 03:07:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e8efabfd-0eb9-4fc8-a0bb-1bc81ef87e0d] succeeded in 0.005131965997861698s: {'triggered': 0} +2026-01-19 03:08:43 INFO celery.app.trace Task connecthub.dispatcher.tick[812bdfa7-88f9-4c90-8f74-d42ae8b0f428] succeeded in 0.01589310899726115s: {'triggered': 0} +2026-01-19 03:09:43 INFO celery.app.trace Task connecthub.dispatcher.tick[f5f18988-e1b0-4248-8733-b060b83bd725] succeeded in 0.020404676004545763s: {'triggered': 0} +2026-01-19 03:10:43 INFO celery.app.trace Task connecthub.ldap.sync[4d9e029c-32b7-4627-be3c-c1bb07225239] succeeded in 0.03874113701749593s: 0 +2026-01-19 03:10:43 INFO celery.app.trace Task connecthub.dispatcher.tick[ca04ef40-0008-40ee-acf6-c8338d2220cb] succeeded in 0.0028613820031750947s: {'triggered': 0} +2026-01-19 03:11:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8658c4e3-08bd-46c1-b8fe-45068be29134] succeeded in 0.013973911991342902s: {'triggered': 0} +2026-01-19 03:12:43 INFO celery.app.trace Task connecthub.dispatcher.tick[7af1e072-a80d-48c7-98d9-adb573f00714] succeeded in 0.02009026100859046s: {'triggered': 0} +2026-01-19 03:13:43 INFO celery.app.trace Task connecthub.dispatcher.tick[4bcd8cf8-41e5-4d4f-8789-c877f6f8f629] succeeded in 0.012816989998100325s: {'triggered': 0} +2026-01-19 03:14:43 INFO celery.app.trace Task connecthub.dispatcher.tick[482929f9-1782-4cb7-b3a0-ea5b02890540] succeeded in 0.026228401984553784s: {'triggered': 0} +2026-01-19 03:15:43 INFO celery.app.trace Task connecthub.ldap.sync[ea19998e-5efd-4c5a-bd6e-bbb7de085b47] succeeded in 0.0157584139960818s: 0 +2026-01-19 03:15:43 INFO celery.app.trace Task connecthub.dispatcher.tick[af99bd1a-9191-4f11-9a6e-386f2ca0a6fe] succeeded in 0.004775761975906789s: {'triggered': 0} +2026-01-19 03:16:43 INFO celery.app.trace Task connecthub.dispatcher.tick[1a77e44d-90c3-4fec-bcbf-769d56d6ebbf] succeeded in 0.010709152003983036s: {'triggered': 0} +2026-01-19 03:17:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3de6036e-5fb1-416a-9aeb-5e6579427ac5] succeeded in 0.016731126001104712s: {'triggered': 0} +2026-01-19 03:18:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3d192d44-3dfc-42ac-9eea-0966a4ac3efe] succeeded in 0.017290792980929837s: {'triggered': 0} +2026-01-19 03:19:43 INFO celery.app.trace Task connecthub.dispatcher.tick[4dc43974-7553-4703-a928-324d599ea0a5] succeeded in 0.009471107012359425s: {'triggered': 0} +2026-01-19 03:20:43 INFO celery.app.trace Task connecthub.ldap.sync[2da3075a-fcf3-40d6-b967-767e37a419f2] succeeded in 0.027577275992371142s: 0 +2026-01-19 03:20:43 INFO celery.app.trace Task connecthub.dispatcher.tick[49f10328-51fb-4d2b-90eb-ae0621559eb0] succeeded in 0.005294263013638556s: {'triggered': 0} +2026-01-19 03:21:43 INFO celery.app.trace Task connecthub.dispatcher.tick[f81f109d-0444-4501-b836-2b8154d9cb49] succeeded in 0.009722982009407133s: {'triggered': 0} +2026-01-19 03:22:43 INFO celery.app.trace Task connecthub.dispatcher.tick[0f89970d-7836-418b-8467-0b161d796da9] succeeded in 0.019643857987830415s: {'triggered': 0} +2026-01-19 03:23:43 INFO celery.app.trace Task connecthub.dispatcher.tick[4897423f-093c-4251-9e59-2c96c3b74ad9] succeeded in 0.016721159016015008s: {'triggered': 0} +2026-01-19 03:24:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d712e4c9-440c-480a-8525-7eae49b4855a] succeeded in 0.01960842899279669s: {'triggered': 0} +2026-01-19 03:25:43 INFO celery.app.trace Task connecthub.ldap.sync[ea5278f1-2007-45c6-a828-92a54676582d] succeeded in 0.009824068984016776s: 0 +2026-01-19 03:25:43 INFO celery.app.trace Task connecthub.dispatcher.tick[7664ba04-eed0-417f-a2a8-09768c06a8d7] succeeded in 0.00505840900586918s: {'triggered': 0} +2026-01-19 03:26:43 INFO celery.app.trace Task connecthub.dispatcher.tick[411e2a57-87db-4163-8943-344075102ef5] succeeded in 0.015534879988990724s: {'triggered': 0} +2026-01-19 03:27:43 INFO celery.app.trace Task connecthub.dispatcher.tick[371e32a7-b225-4ec9-8ee8-4b5cfec9d426] succeeded in 0.018857923976611346s: {'triggered': 0} +2026-01-19 03:28:43 INFO celery.app.trace Task connecthub.dispatcher.tick[95e74053-515b-42e2-98df-d3f857ab0f54] succeeded in 0.012015188985969871s: {'triggered': 0} +2026-01-19 03:29:43 INFO celery.app.trace Task connecthub.dispatcher.tick[8fcd84b7-3362-4084-b1dd-3c74db01fa98] succeeded in 0.030406306992517784s: {'triggered': 0} +2026-01-19 03:30:43 INFO celery.app.trace Task connecthub.ldap.sync[c3986d55-86a7-4ed9-934e-ac6df5c7f5fb] succeeded in 0.03075018199160695s: 0 +2026-01-19 03:30:43 INFO celery.app.trace Task connecthub.dispatcher.tick[af1aa639-cf13-481a-9018-40d4e43ace7c] succeeded in 0.003119964007055387s: {'triggered': 0} +2026-01-19 03:31:43 INFO celery.app.trace Task connecthub.dispatcher.tick[736b5e89-85be-413e-a789-b6ee49689f6c] succeeded in 0.01236902698292397s: {'triggered': 0} +2026-01-19 03:32:43 INFO celery.app.trace Task connecthub.dispatcher.tick[c8bcffb7-1e13-4ecd-9404-39b410b23584] succeeded in 0.02113433799240738s: {'triggered': 0} +2026-01-19 03:33:43 INFO celery.app.trace Task connecthub.dispatcher.tick[34013c33-c273-4e40-be4b-29dd71f93cb4] succeeded in 0.019084791012573987s: {'triggered': 0} +2026-01-19 03:34:43 INFO celery.app.trace Task connecthub.dispatcher.tick[fa778d62-a5f9-40bf-8a1a-731ba46b3300] succeeded in 0.016663243994116783s: {'triggered': 0} +2026-01-19 03:35:43 INFO celery.app.trace Task connecthub.ldap.sync[ef64a663-4f42-49cc-aa8e-db572b9a036c] succeeded in 0.024304638005560264s: 0 +2026-01-19 03:35:43 INFO celery.app.trace Task connecthub.dispatcher.tick[54834cf7-e0ba-4a7c-a3a1-df67137eb2e0] succeeded in 0.004805469012353569s: {'triggered': 0} +2026-01-19 03:36:43 INFO celery.app.trace Task connecthub.dispatcher.tick[1ae5e95d-73a4-4f6a-8c65-a0df910f5e70] succeeded in 0.0194536279886961s: {'triggered': 0} +2026-01-19 03:37:43 INFO celery.app.trace Task connecthub.dispatcher.tick[3081cbb4-12d0-48b9-9e9d-a1c499d8f9a3] succeeded in 0.011503526009619236s: {'triggered': 0} +2026-01-19 03:38:43 INFO celery.app.trace Task connecthub.dispatcher.tick[131fe281-6b2d-4c41-b4b3-cb02b6d0a5a1] succeeded in 0.02362001102301292s: {'triggered': 0} +2026-01-19 03:39:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d333d885-adc8-4b94-83d8-7a4419d7d98f] succeeded in 0.012333277991274372s: {'triggered': 0} +2026-01-19 03:40:43 INFO celery.app.trace Task connecthub.ldap.sync[cb346342-e4cb-484e-adef-f672e8bb64de] succeeded in 0.02327876101480797s: 0 +2026-01-19 03:40:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d757f8b3-2fd7-4660-b8c8-43d923c4e324] succeeded in 0.004191259999061003s: {'triggered': 0} +2026-01-19 03:41:43 INFO celery.app.trace Task connecthub.dispatcher.tick[433f3be4-e016-49b9-bfe3-3e3422c10b69] succeeded in 0.007837935001589358s: {'triggered': 0} +2026-01-19 03:42:43 INFO celery.app.trace Task connecthub.dispatcher.tick[05339d45-4f9f-47a6-95c0-df71eb1deda5] succeeded in 0.01634887099498883s: {'triggered': 0} +2026-01-19 03:43:43 INFO celery.app.trace Task connecthub.dispatcher.tick[d4c2b801-64bb-4a4a-8c20-ab3196f6dd1f] succeeded in 0.005856305011548102s: {'triggered': 0} +2026-01-19 03:44:43 INFO celery.app.trace Task connecthub.dispatcher.tick[ce304518-e09d-470d-b116-03ffc0dfbcb6] succeeded in 0.010685273999115452s: {'triggered': 0} +2026-01-19 03:45:43 INFO celery.app.trace Task connecthub.ldap.sync[5313b0a5-7197-4a01-8a7c-017e987870f3] succeeded in 0.004681302001699805s: 0 +2026-01-19 03:45:43 INFO celery.app.trace Task connecthub.dispatcher.tick[b0d89fbf-8304-4e9b-bf23-afb15d0ab908] succeeded in 0.003847092011710629s: {'triggered': 0} +2026-01-19 03:46:43 INFO celery.app.trace Task connecthub.dispatcher.tick[13165f91-209e-4462-9e0d-f136ec100695] succeeded in 0.01184531900798902s: {'triggered': 0} +2026-01-19 03:47:43 INFO celery.app.trace Task connecthub.dispatcher.tick[cc30ee18-9d5b-4598-91ac-eb6645530315] succeeded in 0.006548389996169135s: {'triggered': 0} +2026-01-19 03:48:43 INFO celery.app.trace Task connecthub.dispatcher.tick[01e3bc80-904c-461d-9225-12049b8f429f] succeeded in 0.002901047992054373s: {'triggered': 0} +2026-01-19 03:49:43 INFO celery.app.trace Task connecthub.dispatcher.tick[e650c1c2-e921-4e4a-88a5-0b4e2c45296d] succeeded in 0.03390803502406925s: {'triggered': 0} +2026-01-19 03:50:43 INFO celery.app.trace Task connecthub.ldap.sync[6c39bdd2-afe1-4621-939b-ad02612413d4] succeeded in 0.013919490011176094s: 0 +2026-01-19 03:50:43 INFO celery.app.trace Task connecthub.dispatcher.tick[5836fa6d-e687-4af4-a02b-83d3a959c2c7] succeeded in 0.005334219982614741s: {'triggered': 0} +2026-01-19 03:51:43 INFO celery.app.trace Task connecthub.dispatcher.tick[eedd130a-9624-4772-ac39-b8e314e728a9] succeeded in 0.012850278988480568s: {'triggered': 0} +2026-01-19 03:52:43 INFO celery.app.trace Task connecthub.dispatcher.tick[faabafc9-e377-4142-94e2-55861948d620] succeeded in 0.03188178199343383s: {'triggered': 0} +2026-01-19 03:53:43 INFO celery.app.trace Task connecthub.dispatcher.tick[55dda364-6cb9-4879-8829-55dc7131163a] succeeded in 0.0074333920201752335s: {'triggered': 0} +2026-01-19 03:54:43 INFO celery.app.trace Task connecthub.dispatcher.tick[21a10635-35b2-4b47-b942-1ec3b8305dd4] succeeded in 0.009713903011288494s: {'triggered': 0} +2026-01-19 03:55:43 INFO celery.app.trace Task connecthub.ldap.sync[8dc124b4-5c55-4b26-9077-a16d6d093da7] succeeded in 0.0072223530150949955s: 0 +2026-01-19 03:55:43 INFO celery.app.trace Task connecthub.dispatcher.tick[fa4c5c2f-4155-4199-8bb9-5042fe000845] succeeded in 0.0033515669929329306s: {'triggered': 0} +2026-01-19 03:56:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2ce603f6-da87-4c12-bcde-9c71e729496e] succeeded in 0.012646651011891663s: {'triggered': 0} +2026-01-19 03:57:43 INFO celery.app.trace Task connecthub.dispatcher.tick[a0859b66-9e15-4a54-8295-f86b59984a1b] succeeded in 0.004163478995906189s: {'triggered': 0} +2026-01-19 03:58:43 INFO celery.app.trace Task connecthub.dispatcher.tick[9974a084-7955-424d-a40b-9a6ff17845da] succeeded in 0.017236612999113277s: {'triggered': 0} +2026-01-19 03:59:43 INFO celery.app.trace Task connecthub.dispatcher.tick[000243d0-9dd3-4a5c-bc84-975ee45fd1e7] succeeded in 0.007663819007575512s: {'triggered': 0} +2026-01-19 04:00:43 INFO celery.app.trace Task connecthub.ldap.sync[0cc9637a-695b-4b87-8df6-f3d3657a5c61] succeeded in 0.003993849997641519s: 0 +2026-01-19 04:00:43 INFO celery.app.trace Task connecthub.dispatcher.tick[ba39bd96-0a8d-40b3-8958-ad904d3ea8b8] succeeded in 0.0023816349857952446s: {'triggered': 0} +2026-01-19 04:01:43 INFO celery.app.trace Task connecthub.dispatcher.tick[ac899266-f0ca-4776-9659-9a7b5dfe2977] succeeded in 0.008760286989854649s: {'triggered': 0} +2026-01-19 04:02:43 INFO celery.app.trace Task connecthub.dispatcher.tick[1bf53d1d-6a37-46b9-b949-1aae4c1fc139] succeeded in 0.008339160005562007s: {'triggered': 0} +2026-01-19 04:03:43 INFO celery.app.trace Task connecthub.dispatcher.tick[edcfea13-ea9e-48db-bcdf-d7beb6590926] succeeded in 0.0033653000136837363s: {'triggered': 0} +2026-01-19 04:04:43 INFO celery.app.trace Task connecthub.dispatcher.tick[2f38fecd-7bf9-44b7-9b0b-dad6b777f076] succeeded in 0.025671234994661063s: {'triggered': 0} +2026-01-19 05:48:31 INFO celery.app.trace Task connecthub.ldap.sync[b132b022-4d32-4dd3-893f-24f7e479695f] succeeded in 0.1282125809811987s: 0 +2026-01-19 05:48:31 INFO celery.app.trace Task connecthub.dispatcher.tick[15f12849-ffa2-49dc-95c2-07f17ece0a9b] succeeded in 0.1469927069847472s: {'triggered': 0} +2026-01-19 05:49:31 INFO celery.app.trace Task connecthub.dispatcher.tick[80cce086-6c28-451f-a29f-aa104767188d] succeeded in 0.021372005983721465s: {'triggered': 0} +2026-01-19 05:50:31 INFO celery.app.trace Task connecthub.dispatcher.tick[7ce24676-af7b-459a-8dac-1ba005d157ff] succeeded in 0.021012006007367745s: {'triggered': 0} +2026-01-19 05:51:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5cfc6d0f-1683-4639-b3a6-ab0e5ee07cc6] succeeded in 0.022955802007345483s: {'triggered': 0} +2026-01-19 05:52:31 INFO celery.app.trace Task connecthub.dispatcher.tick[1c4ddfc1-8da6-4d7b-adc3-f3ab0107750b] succeeded in 0.009995480999350548s: {'triggered': 0} +2026-01-19 05:53:31 INFO celery.app.trace Task connecthub.ldap.sync[cc541778-b272-48ae-b3ca-cdbc70187168] succeeded in 0.011894402006873861s: 0 +2026-01-19 05:53:31 INFO celery.app.trace Task connecthub.dispatcher.tick[9176b7b5-658b-42fa-a664-5abea5b6f6f3] succeeded in 0.0014955869992263615s: {'triggered': 0} +2026-01-19 05:54:31 INFO celery.app.trace Task connecthub.dispatcher.tick[8e96e338-6f0a-4700-ba96-7042e9f2b5ed] succeeded in 0.059367509005824104s: {'triggered': 0} +2026-01-19 05:55:31 INFO celery.app.trace Task connecthub.dispatcher.tick[532986cb-ce7a-442b-8863-10082df87466] succeeded in 0.012218777002999559s: {'triggered': 0} +2026-01-19 05:56:31 INFO celery.app.trace Task connecthub.dispatcher.tick[14879af2-acd8-4a01-8fb9-f63fb7ea7d2b] succeeded in 0.012634235987206921s: {'triggered': 0} +2026-01-19 05:57:31 INFO celery.app.trace Task connecthub.dispatcher.tick[0b0ce857-824e-4701-8c13-b919446bec65] succeeded in 0.02650239202193916s: {'triggered': 0} +2026-01-19 05:58:31 INFO celery.app.trace Task connecthub.ldap.sync[f32ed72f-0c40-4050-b2a8-a3c7779d2276] succeeded in 0.030602771003032103s: 0 +2026-01-19 05:58:31 INFO celery.app.trace Task connecthub.dispatcher.tick[e1ff00d4-d319-4381-9b13-749f5555873a] succeeded in 0.00267954301671125s: {'triggered': 0} +2026-01-19 05:59:31 INFO celery.app.trace Task connecthub.dispatcher.tick[9377bb40-facd-4b1d-9444-8818fb75d95c] succeeded in 0.014565716992365196s: {'triggered': 0} +2026-01-19 06:00:31 INFO celery.app.trace Task connecthub.dispatcher.tick[64ef6e3f-618a-4f8b-9c14-111e75291552] succeeded in 0.003988126991316676s: {'triggered': 0} +2026-01-19 06:01:31 INFO celery.app.trace Task connecthub.dispatcher.tick[14a28086-0b50-4306-ac42-fea50c8350d1] succeeded in 0.01090359000954777s: {'triggered': 0} +2026-01-19 06:02:31 INFO celery.app.trace Task connecthub.dispatcher.tick[02d87778-4bf2-4067-a1c5-e8e151ce2943] succeeded in 0.00487250299192965s: {'triggered': 0} +2026-01-19 06:03:31 INFO celery.app.trace Task connecthub.ldap.sync[edf4dfa9-25bd-482c-90a9-d36a46da8b1f] succeeded in 0.01036082801874727s: 0 +2026-01-19 06:03:31 INFO celery.app.trace Task connecthub.dispatcher.tick[97c7211e-c9bf-44a8-9e12-192b3f1136dc] succeeded in 0.003975289990194142s: {'triggered': 0} +2026-01-19 06:04:31 INFO celery.app.trace Task connecthub.dispatcher.tick[e7212ff2-5853-478f-b145-9a1936c1d60c] succeeded in 0.01183836898417212s: {'triggered': 0} +2026-01-19 06:05:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5cc90dfc-91dc-4fda-b634-6f091e1172a3] succeeded in 0.008285254996735603s: {'triggered': 0} +2026-01-19 06:06:31 INFO celery.app.trace Task connecthub.dispatcher.tick[6fa9c7bc-daf3-44f2-953a-38ecac205894] succeeded in 0.0052172499999869615s: {'triggered': 0} +2026-01-19 06:07:31 INFO celery.app.trace Task connecthub.dispatcher.tick[1107f3bf-364c-4bb5-9bb6-2ce9635a9182] succeeded in 0.017385210987413302s: {'triggered': 0} +2026-01-19 06:08:30 INFO celery.app.trace Task connecthub.ldap.sync[a2744bda-4078-4e1b-b393-9bfef8774db1] succeeded in 0.011422706011217088s: 0 +2026-01-19 06:08:31 INFO celery.app.trace Task connecthub.dispatcher.tick[bc883f7f-c9e4-4ed4-8621-2cc7b3919730] succeeded in 0.0021592499979306012s: {'triggered': 0} +2026-01-19 06:09:31 INFO celery.app.trace Task connecthub.dispatcher.tick[6b34bb7a-3df2-4280-bd03-52a56c7de8d0] succeeded in 0.00891158901504241s: {'triggered': 0} +2026-01-19 06:10:31 INFO celery.app.trace Task connecthub.dispatcher.tick[76cf2888-8dc2-4a6d-900a-1670816a8666] succeeded in 0.008019419998163357s: {'triggered': 0} +2026-01-19 06:11:31 INFO celery.app.trace Task connecthub.dispatcher.tick[0e23993b-5071-4968-93ca-ff9000e09b97] succeeded in 0.030800262989941984s: {'triggered': 0} +2026-01-19 06:12:31 INFO celery.app.trace Task connecthub.dispatcher.tick[e4f659e2-6ed7-438e-80f5-c7419d26d1b1] succeeded in 0.011725378019036725s: {'triggered': 0} +2026-01-19 06:13:30 INFO celery.app.trace Task connecthub.ldap.sync[ec7ebd43-df03-406a-a72f-247e61791375] succeeded in 0.004051460011396557s: 0 +2026-01-19 06:13:31 INFO celery.app.trace Task connecthub.dispatcher.tick[529afe92-2764-4213-b466-65eb9373caf1] succeeded in 0.0025093749864026904s: {'triggered': 0} +2026-01-19 06:14:31 INFO celery.app.trace Task connecthub.dispatcher.tick[9dedc3dc-782e-4b61-9189-4c85158fb9cd] succeeded in 0.015097674011485651s: {'triggered': 0} +2026-01-19 06:15:31 INFO celery.app.trace Task connecthub.dispatcher.tick[f763bfb8-e4f7-4804-9197-32c4a7622299] succeeded in 0.010907214018516243s: {'triggered': 0} +2026-01-19 06:16:31 INFO celery.app.trace Task connecthub.dispatcher.tick[bd79705b-8f3f-4472-b66a-a13b9f5a9c9c] succeeded in 0.01167404800071381s: {'triggered': 0} +2026-01-19 06:17:31 INFO celery.app.trace Task connecthub.dispatcher.tick[23914f43-6b80-4668-8969-47037d7fd350] succeeded in 0.01727088398183696s: {'triggered': 0} +2026-01-19 06:18:30 INFO celery.app.trace Task connecthub.ldap.sync[2d0cd040-67ff-48da-a56e-10335b3da9ca] succeeded in 0.0077435619896277785s: 0 +2026-01-19 06:18:31 INFO celery.app.trace Task connecthub.dispatcher.tick[98ed8640-0dca-46b2-b842-6e253094e327] succeeded in 0.0056880149932112545s: {'triggered': 0} +2026-01-19 06:19:31 INFO celery.app.trace Task connecthub.dispatcher.tick[2c7b3bb5-3ff2-4b46-a6b4-31595d96a173] succeeded in 0.004880430002231151s: {'triggered': 0} +2026-01-19 06:20:31 INFO celery.app.trace Task connecthub.dispatcher.tick[de482cd1-b57a-4162-a351-ce5876847dd0] succeeded in 0.017834811995271593s: {'triggered': 0} +2026-01-19 06:21:31 INFO celery.app.trace Task connecthub.dispatcher.tick[26d3d49c-b088-4fc1-a9b3-8f067dde012e] succeeded in 0.008905593014787883s: {'triggered': 0} +2026-01-19 06:22:31 INFO celery.app.trace Task connecthub.dispatcher.tick[4d2d8c9f-d41b-460f-ad4c-68aabad25487] succeeded in 0.0034482099872548133s: {'triggered': 0} +2026-01-19 06:23:31 INFO celery.app.trace Task connecthub.ldap.sync[795d9ec7-ed97-466c-9a33-20f6d12d3066] succeeded in 0.019598868006141856s: 0 +2026-01-19 06:23:31 INFO celery.app.trace Task connecthub.dispatcher.tick[61c4fc0e-2213-4e06-8df0-b481c2349607] succeeded in 0.006790526007534936s: {'triggered': 0} +2026-01-19 06:24:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5bce9806-43d7-48a7-9c80-6f8f79b386ab] succeeded in 0.009290754998801276s: {'triggered': 0} +2026-01-19 06:25:31 INFO celery.app.trace Task connecthub.dispatcher.tick[e7e3c1e1-06d8-40a3-9277-dd55f9f18375] succeeded in 0.03407689798041247s: {'triggered': 0} +2026-01-19 06:26:31 INFO celery.app.trace Task connecthub.dispatcher.tick[1bc70bcb-76a3-4f4b-8e7c-8c8357604207] succeeded in 0.012043897993862629s: {'triggered': 0} +2026-01-19 06:27:31 INFO celery.app.trace Task connecthub.dispatcher.tick[7c194d6a-bec5-42e0-a55a-063946e9cbd7] succeeded in 0.003868920000968501s: {'triggered': 0} +2026-01-19 06:28:31 INFO celery.app.trace Task connecthub.ldap.sync[9df44227-6c4f-4adc-bb5f-d5a0c1c93fe6] succeeded in 0.011176341999089345s: 0 +2026-01-19 06:28:31 INFO celery.app.trace Task connecthub.dispatcher.tick[f6712c45-0a73-400e-a589-da18c5c1c27e] succeeded in 0.0068062550271861255s: {'triggered': 0} +2026-01-19 06:29:31 INFO celery.app.trace Task connecthub.dispatcher.tick[4f58e80c-a7fa-4d62-908e-ef3f2a1ee4f0] succeeded in 0.011789298994699493s: {'triggered': 0} +2026-01-19 06:30:31 INFO celery.app.trace Task connecthub.dispatcher.tick[85ecb5c2-72e8-49c6-9b0e-833ea15237aa] succeeded in 0.011535549012478441s: {'triggered': 0} +2026-01-19 06:31:31 INFO celery.app.trace Task connecthub.dispatcher.tick[1f607e24-987a-4cb2-ad3a-a1c6ba8fefb3] succeeded in 0.007167672010837123s: {'triggered': 0} +2026-01-19 06:32:31 INFO celery.app.trace Task connecthub.dispatcher.tick[336bc838-d51d-4c8a-ab5a-eca9dbb986e2] succeeded in 0.01042546599637717s: {'triggered': 0} +2026-01-19 06:33:31 INFO celery.app.trace Task connecthub.ldap.sync[cc9250f9-b90a-49c8-adea-3754bbad8e0c] succeeded in 0.00741658901097253s: 0 +2026-01-19 06:33:31 INFO celery.app.trace Task connecthub.dispatcher.tick[2c4332b9-1f08-4d7f-b332-7eb25e34ef6f] succeeded in 0.004437961004441604s: {'triggered': 0} +2026-01-19 06:34:31 INFO celery.app.trace Task connecthub.dispatcher.tick[f03732f1-c965-42d3-a24e-145bd2ffae78] succeeded in 0.01283809301094152s: {'triggered': 0} +2026-01-19 06:35:31 INFO celery.app.trace Task connecthub.dispatcher.tick[2c10a971-25fc-473e-9c1b-fff17d0da019] succeeded in 0.011602800019318238s: {'triggered': 0} +2026-01-19 06:36:31 INFO celery.app.trace Task connecthub.dispatcher.tick[db130886-13bf-45fe-87d3-18b2dce6f420] succeeded in 0.00810333900153637s: {'triggered': 0} +2026-01-19 06:37:31 INFO celery.app.trace Task connecthub.dispatcher.tick[30fe29ed-d999-4af3-81a6-f8d09ee7a2ab] succeeded in 0.005392504011979327s: {'triggered': 0} +2026-01-19 06:38:31 INFO celery.app.trace Task connecthub.ldap.sync[f8c5d81f-5537-43fb-bbcb-595c29448c49] succeeded in 0.011360425996826962s: 0 +2026-01-19 06:38:31 INFO celery.app.trace Task connecthub.dispatcher.tick[3b82b81d-1825-4e28-90aa-192c2e00c831] succeeded in 0.00557575499988161s: {'triggered': 0} +2026-01-19 06:39:31 INFO celery.app.trace Task connecthub.dispatcher.tick[3c479332-6d6a-47dd-a8ee-c111d9c30840] succeeded in 0.003543628001352772s: {'triggered': 0} +2026-01-19 06:40:31 INFO celery.app.trace Task connecthub.dispatcher.tick[cacbebaa-cffc-42b6-8dd5-26b1384a875e] succeeded in 0.007591755012981594s: {'triggered': 0} +2026-01-19 06:41:31 INFO celery.app.trace Task connecthub.dispatcher.tick[041c2158-4b0d-47d2-a1b4-5d4797cdadd1] succeeded in 0.007218962971819565s: {'triggered': 0} +2026-01-19 06:42:31 INFO celery.app.trace Task connecthub.dispatcher.tick[2d08c4c4-b9ba-4879-9cbf-6d67b886d2ac] succeeded in 0.003551294998032972s: {'triggered': 0} +2026-01-19 06:43:31 INFO celery.app.trace Task connecthub.ldap.sync[e8db94d7-3009-4d4a-a95b-88143b3fdaae] succeeded in 0.018845348007744178s: 0 +2026-01-19 06:43:31 INFO celery.app.trace Task connecthub.dispatcher.tick[6adf3926-d13a-4681-901a-e296f20fe3bb] succeeded in 0.003040751995285973s: {'triggered': 0} +2026-01-19 06:44:31 INFO celery.app.trace Task connecthub.dispatcher.tick[73263e41-501b-46c6-8b40-c88c52b1661b] succeeded in 0.012250842002686113s: {'triggered': 0} +2026-01-19 06:45:31 INFO celery.app.trace Task connecthub.dispatcher.tick[79f58562-f61f-4314-98d9-5659b272ca77] succeeded in 0.02165605698246509s: {'triggered': 0} +2026-01-19 06:46:31 INFO celery.app.trace Task connecthub.dispatcher.tick[0d61331b-8115-46a8-ac8e-b622167069ac] succeeded in 0.010152550006750971s: {'triggered': 0} +2026-01-19 06:47:31 INFO celery.app.trace Task connecthub.dispatcher.tick[11b483b1-fbad-42a4-9bc7-16c3cac3b337] succeeded in 0.012088592018699273s: {'triggered': 0} +2026-01-19 06:48:31 INFO celery.app.trace Task connecthub.ldap.sync[63f49187-9770-42a0-88d3-68a2b196d567] succeeded in 0.05958496002131142s: 0 +2026-01-19 06:48:31 INFO celery.app.trace Task connecthub.dispatcher.tick[97233158-af9c-4688-bcde-def20bc9b5e1] succeeded in 0.003544336010236293s: {'triggered': 0} +2026-01-19 06:49:31 INFO celery.app.trace Task connecthub.dispatcher.tick[d5d2f4a2-c317-4dea-92e1-3d385322a862] succeeded in 0.0068232130142860115s: {'triggered': 0} +2026-01-19 06:50:31 INFO celery.app.trace Task connecthub.dispatcher.tick[f9624a31-89c8-43bb-a072-8ade9bfd069e] succeeded in 0.02807664600550197s: {'triggered': 0} +2026-01-19 06:51:31 INFO celery.app.trace Task connecthub.dispatcher.tick[1592fc50-db10-4fc0-8165-344c97f947e4] succeeded in 0.00173987599555403s: {'triggered': 0} +2026-01-19 06:52:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5ecceb0c-ef89-4565-a87d-7943befa92b5] succeeded in 0.00223950098734349s: {'triggered': 0} +2026-01-19 06:53:31 INFO celery.app.trace Task connecthub.ldap.sync[d860c805-6739-4775-88a2-9115110fb16d] succeeded in 0.01060113200219348s: 0 +2026-01-19 06:53:31 INFO celery.app.trace Task connecthub.dispatcher.tick[465453a1-7997-4d31-9a3e-92a9b66221e3] succeeded in 0.0035116280196234584s: {'triggered': 0} +2026-01-19 06:54:31 INFO celery.app.trace Task connecthub.dispatcher.tick[fee8f7aa-9fbf-4bc3-b5df-239c2f0f53fe] succeeded in 0.008811507024802268s: {'triggered': 0} +2026-01-19 06:55:31 INFO celery.app.trace Task connecthub.dispatcher.tick[29efc37b-b1a7-4150-aa87-96cb8c5ce5ec] succeeded in 0.0066979629918932915s: {'triggered': 0} +2026-01-19 06:56:31 INFO celery.app.trace Task connecthub.dispatcher.tick[9ed26a5a-4268-47aa-966c-f0d42f579a23] succeeded in 0.006925088004209101s: {'triggered': 0} +2026-01-19 06:57:31 INFO celery.app.trace Task connecthub.dispatcher.tick[e25fbe5b-5a93-4b0a-90cd-b4f561c197b3] succeeded in 0.00654696297715418s: {'triggered': 0} +2026-01-19 06:58:31 INFO celery.app.trace Task connecthub.ldap.sync[b8b9d4d8-d8e0-4ced-a57f-fdef366f78a2] succeeded in 0.00644042098429054s: 0 +2026-01-19 06:58:31 INFO celery.app.trace Task connecthub.dispatcher.tick[63ba059f-9b59-4ba7-b4d4-cf9181f6bd70] succeeded in 0.0044419199984986335s: {'triggered': 0} +2026-01-19 06:59:31 INFO celery.app.trace Task connecthub.dispatcher.tick[325ceb85-e9da-4d55-8f30-ee5574688d93] succeeded in 0.01432676101103425s: {'triggered': 0} +2026-01-19 07:00:31 INFO celery.app.trace Task connecthub.dispatcher.tick[ebe7cca5-1e0a-4419-9de1-4dd7116c7414] succeeded in 0.005772962991613895s: {'triggered': 0} +2026-01-19 07:01:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5402ace3-5787-43b8-b6b9-1a6e921a334b] succeeded in 0.005914879002375528s: {'triggered': 0} +2026-01-19 07:02:31 INFO celery.app.trace Task connecthub.dispatcher.tick[b8dbacc4-6215-4dfa-a457-bcb99a0beba1] succeeded in 0.004113919014343992s: {'triggered': 0} +2026-01-19 07:03:31 INFO celery.app.trace Task connecthub.ldap.sync[408e6362-c109-48c0-b0ca-8db99c61e26f] succeeded in 0.009256715013179928s: 0 +2026-01-19 07:03:31 INFO celery.app.trace Task connecthub.dispatcher.tick[1b48aca1-5868-48f0-8b3a-dc1de82cde89] succeeded in 0.005305128026520833s: {'triggered': 0} +2026-01-19 07:04:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5293ef12-9b20-4aaf-ab81-1ea21c3d5a37] succeeded in 0.004093044000910595s: {'triggered': 0} +2026-01-19 07:05:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5443a62e-f189-4221-90c7-a666e16a4d4f] succeeded in 0.006882046000100672s: {'triggered': 0} +2026-01-19 07:06:31 INFO celery.app.trace Task connecthub.dispatcher.tick[5d9e6878-e59e-49d5-9826-bba5eb01e0fe] succeeded in 0.010836591012775898s: {'triggered': 0} +2026-01-19 07:07:31 INFO celery.app.trace Task connecthub.dispatcher.tick[ff8670ff-7ad3-4bad-8714-c11f2dc2d784] succeeded in 0.005607170984148979s: {'triggered': 0} +2026-01-19 07:08:31 INFO celery.app.trace Task connecthub.ldap.sync[ff6d1afb-a0d4-44dd-b7fe-71254123f189] succeeded in 0.005720296001527458s: 0 +2026-01-19 07:08:31 INFO celery.app.trace Task connecthub.dispatcher.tick[2780a585-4b4f-43bc-bb8c-0f708e55e4ea] succeeded in 0.003524835978168994s: {'triggered': 0} +2026-01-19 07:09:31 INFO celery.app.trace Task connecthub.dispatcher.tick[499401fd-e4e8-4067-9731-4fc83922501c] succeeded in 0.008500130992615595s: {'triggered': 0} +2026-01-19 07:10:31 INFO celery.app.trace Task connecthub.dispatcher.tick[4ee5f0b6-bf40-4887-b0ce-e354a7c2a8e1] succeeded in 0.00422633599373512s: {'triggered': 0} +2026-01-19 07:11:31 INFO celery.app.trace Task connecthub.dispatcher.tick[fc661697-5937-4180-bf46-474b561c74c1] succeeded in 0.00827938099973835s: {'triggered': 0} +2026-01-19 07:12:31 INFO celery.app.trace Task connecthub.dispatcher.tick[6a1f6967-455d-4add-96e8-4b87bd05fcdf] succeeded in 0.008251963998191059s: {'triggered': 0} +2026-01-19 07:13:31 INFO celery.app.trace Task connecthub.ldap.sync[8ec4b986-66d3-45ba-b794-8fd26d5c605d] succeeded in 0.007281922007678077s: 0 +2026-01-19 07:13:31 INFO celery.app.trace Task connecthub.dispatcher.tick[f38c4b9b-358d-4600-8096-f770b28ba000] succeeded in 0.002067293011350557s: {'triggered': 0} +2026-01-19 07:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[32c5d3f1-9e56-4f2a-b77b-789876781824] succeeded in 0.02657977002672851s: {'triggered': 0} +2026-01-19 07:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[159fc480-2f3d-4717-9b73-61d57cbb6c8c] succeeded in 0.009443839982850477s: {'triggered': 0} +2026-01-19 07:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0811ac3b-43db-4449-b302-0c9203862417] succeeded in 0.0029625849856529385s: {'triggered': 0} +2026-01-19 07:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[09118a80-03e8-4710-95fe-fcae74c3f191] succeeded in 0.013060133991530165s: {'triggered': 0} +2026-01-19 07:18:31 INFO celery.app.trace Task connecthub.ldap.sync[044edd1f-e4a6-4691-95fe-e397d691fda7] succeeded in 0.0106652989925351s: 0 +2026-01-19 07:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cc45cc59-7de6-42fd-bc6d-4396ddea5842] succeeded in 0.004563336988212541s: {'triggered': 0} +2026-01-19 07:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8c29e4e3-bfb7-4906-a2eb-5bb10e2cc7e6] succeeded in 0.020188181020785123s: {'triggered': 0} +2026-01-19 07:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4766097a-1140-4ff5-80a5-11567164ecfa] succeeded in 0.009974382992368191s: {'triggered': 0} +2026-01-19 07:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bd5af407-5b75-470d-b8d7-98b36ca0f6fd] succeeded in 0.015364927996415645s: {'triggered': 0} +2026-01-19 07:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ffe0d7c6-f6a8-448a-9aa7-bec2978461c8] succeeded in 0.004575212020426989s: {'triggered': 0} +2026-01-19 07:23:31 INFO celery.app.trace Task connecthub.ldap.sync[edd1ee8d-1170-46ef-8401-7b60fe8d3b30] succeeded in 0.015558510989649221s: 0 +2026-01-19 07:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c0b891f6-9b19-4226-9431-43865d623eba] succeeded in 0.004877836996456608s: {'triggered': 0} +2026-01-19 07:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cb110f54-dfbb-4a49-959a-a845cb93e0ba] succeeded in 0.020852154004387558s: {'triggered': 0} +2026-01-19 07:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bbc66684-fed8-4a13-b21d-008e856bdb21] succeeded in 0.010994413984008133s: {'triggered': 0} +2026-01-19 07:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[31a7d09d-7af7-4a80-b314-fa0dc324b376] succeeded in 0.013468468008795753s: {'triggered': 0} +2026-01-19 07:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8eab2042-dac2-4fcf-abc4-264774c3d54e] succeeded in 0.014266111014876515s: {'triggered': 0} +2026-01-19 07:28:31 INFO celery.app.trace Task connecthub.ldap.sync[c5c96834-9f6e-43e5-832f-a9fae9a9b844] succeeded in 0.009533715987345204s: 0 +2026-01-19 07:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f57e6162-aada-4aaf-9e5c-721b7e6db8fc] succeeded in 0.00431791998562403s: {'triggered': 0} +2026-01-19 07:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[959ef57e-7405-4f9b-abf6-7e1c12cb3c63] succeeded in 0.014251457992941141s: {'triggered': 0} +2026-01-19 07:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6721e0ad-c2a7-46cf-807c-aa64bbc70d76] succeeded in 0.010572258004685864s: {'triggered': 0} +2026-01-19 07:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b5c3c031-fb07-4ca0-928a-888283933a23] succeeded in 0.012841780000599101s: {'triggered': 0} +2026-01-19 07:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5263ca7e-eefc-421f-8e3b-26772ca16c98] succeeded in 0.0364188700041268s: {'triggered': 0} +2026-01-19 07:33:31 INFO celery.app.trace Task connecthub.ldap.sync[7c9429d4-37ce-4257-9fff-0e1e2a6527cb] succeeded in 0.02053233000333421s: 0 +2026-01-19 07:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a2f4bd95-5c61-46ea-a469-a81f6828733c] succeeded in 0.0022195460041984916s: {'triggered': 0} +2026-01-19 07:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6c60c7dd-0ad4-4bb1-aa02-9a7a4ad09a40] succeeded in 0.010389770002802834s: {'triggered': 0} +2026-01-19 07:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[356fccae-f667-4e04-8d97-0cbb00d43d25] succeeded in 0.011456757987616584s: {'triggered': 0} +2026-01-19 07:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c30cf437-d897-4f4d-a1b3-6d77ba584d63] succeeded in 0.013211871992098168s: {'triggered': 0} +2026-01-19 07:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[017f8ea1-be7d-46d8-ae62-d28075620232] succeeded in 0.018871442996896803s: {'triggered': 0} +2026-01-19 07:38:31 INFO celery.app.trace Task connecthub.ldap.sync[6e7efce7-e39d-45f9-abfd-deeb553d278f] succeeded in 0.030210291995899752s: 0 +2026-01-19 07:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b9b2496d-a20b-44f0-a92b-5e2a614b8bda] succeeded in 0.0027005870069842786s: {'triggered': 0} +2026-01-19 07:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c21d1dff-da10-4104-b2c9-7e36f9d76c79] succeeded in 0.01826493800035678s: {'triggered': 0} +2026-01-19 07:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[aa8c751b-c080-469c-816f-e1c18d51ac1d] succeeded in 0.0205477130075451s: {'triggered': 0} +2026-01-19 07:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f71b8de8-006b-4cf2-9576-a27d2cbc058b] succeeded in 0.019086334010353312s: {'triggered': 0} +2026-01-19 07:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6c7ad0ca-91d9-410c-9a61-8da0036141a6] succeeded in 0.013674151006853208s: {'triggered': 0} +2026-01-19 07:43:31 INFO celery.app.trace Task connecthub.ldap.sync[85f53aae-1758-47ec-9eee-9d846f2acd4c] succeeded in 0.011413733998779207s: 0 +2026-01-19 07:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5e71b943-2cfc-41a5-a5f3-a168e03c0ead] succeeded in 0.008508436003467068s: {'triggered': 0} +2026-01-19 07:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ea8b023d-6ea2-4e91-88ab-376f0372da9c] succeeded in 0.00988475899794139s: {'triggered': 0} +2026-01-19 07:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[269eaa55-2ee6-4c6f-9cac-ada6720ebbe7] succeeded in 0.013148581987479702s: {'triggered': 0} +2026-01-19 07:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d36ecc51-3800-45d6-bbe3-09262acb2c84] succeeded in 0.01424109999788925s: {'triggered': 0} +2026-01-19 07:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cd7ccd01-f23d-4637-a9d0-09d024a79b29] succeeded in 0.010866461001569405s: {'triggered': 0} +2026-01-19 07:48:31 INFO celery.app.trace Task connecthub.ldap.sync[7441fafb-8d42-4b63-9504-c729c94d8097] succeeded in 0.01633371799835004s: 0 +2026-01-19 07:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dea6cbf4-532b-4cc6-9dd0-0c2bf3707be5] succeeded in 0.0031309339974541217s: {'triggered': 0} +2026-01-19 07:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[87d74235-595f-47d7-84c8-1088a75552ab] succeeded in 0.06598833299358375s: {'triggered': 0} +2026-01-19 07:50:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e99683fe-4fa9-4a0c-8f33-5fc92d989740] succeeded in 0.0113777760125231s: {'triggered': 0} +2026-01-19 07:51:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f2ecec0f-2cbc-452d-9004-ecad72d924be] succeeded in 0.024847808002959937s: {'triggered': 0} +2026-01-19 07:52:32 INFO celery.app.trace Task connecthub.dispatcher.tick[640d8742-6c99-4e61-a46b-25ce8090b981] succeeded in 0.012161740014562383s: {'triggered': 0} +2026-01-19 07:53:31 INFO celery.app.trace Task connecthub.ldap.sync[c35825c0-29f0-471b-a1a1-2c5547e92b54] succeeded in 0.012420532992109656s: 0 +2026-01-19 07:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[99f8556a-fc6a-470a-8ca8-9ee736ce3aea] succeeded in 0.0023708810040261596s: {'triggered': 0} +2026-01-19 07:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d20f496f-e95c-40e7-ac3d-25d0f1e09769] succeeded in 0.016395126993302256s: {'triggered': 0} +2026-01-19 07:55:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f9288ac2-2561-4cd1-b8ec-e12984553613] succeeded in 0.02254060099949129s: {'triggered': 0} +2026-01-19 07:56:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b50ef748-529a-4614-9e07-1b3573a999db] succeeded in 0.030645207996712998s: {'triggered': 0} +2026-01-19 07:57:32 INFO celery.app.trace Task connecthub.dispatcher.tick[be90a83a-f09b-494b-8e67-1574ccd15e70] succeeded in 0.020041512994794175s: {'triggered': 0} +2026-01-19 07:58:31 INFO celery.app.trace Task connecthub.ldap.sync[fbb8d25d-44cd-4d9f-aeb4-7f897f453687] succeeded in 0.01095598700339906s: 0 +2026-01-19 07:58:32 INFO celery.app.trace Task connecthub.dispatcher.tick[69dbb8ce-e0cd-4929-b016-31dc6c389917] succeeded in 0.004494386987062171s: {'triggered': 0} +2026-01-19 07:59:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1ef8ff2f-4c48-47b3-9321-29415eaca259] succeeded in 0.022751187992980704s: {'triggered': 0} +2026-01-19 08:00:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c41e6a6d-30d0-4a0c-a3bc-49cbd142d1a8] succeeded in 0.02716044700355269s: {'triggered': 0} +2026-01-19 08:01:32 INFO celery.app.trace Task connecthub.dispatcher.tick[35198b9b-1f96-457d-bdf8-88f7ad1bc94d] succeeded in 0.013847163005266339s: {'triggered': 0} +2026-01-19 08:02:32 INFO celery.app.trace Task connecthub.dispatcher.tick[047c161a-9685-4b71-802a-94f40ad8ddf7] succeeded in 0.013249868992716074s: {'triggered': 0} +2026-01-19 08:03:31 INFO celery.app.trace Task connecthub.ldap.sync[b1b1bfc5-e6a1-47e7-bdd9-f41ab00785ab] succeeded in 0.01750904700020328s: 0 +2026-01-19 08:03:32 INFO celery.app.trace Task connecthub.dispatcher.tick[daaa868a-74b9-43fa-9cf4-7b7586feca40] succeeded in 0.004216052999254316s: {'triggered': 0} +2026-01-19 08:04:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d1f5fa87-f2fe-469c-be12-bc1e396d2013] succeeded in 0.028780325985280797s: {'triggered': 0} +2026-01-19 08:05:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0c7dfedc-b378-4b31-82a0-b84643b12c22] succeeded in 0.017670461995294318s: {'triggered': 0} +2026-01-19 08:06:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7f9ec9f3-b9d7-4853-b36e-1bfb8f189e40] succeeded in 0.02333539500250481s: {'triggered': 0} +2026-01-19 08:07:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5d1fcf4c-34ed-4395-a281-da680eab1180] succeeded in 0.012851783016230911s: {'triggered': 0} +2026-01-19 08:08:31 INFO celery.app.trace Task connecthub.ldap.sync[63fe43a8-c281-48dc-a9e6-8629c948bbe8] succeeded in 0.03013566299341619s: 0 +2026-01-19 08:08:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c7e24a7b-9e18-46cf-b38e-a97d4abc0212] succeeded in 0.004553762002615258s: {'triggered': 0} +2026-01-19 08:09:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5ab48bdc-878d-495b-bf87-5192ea83ddb4] succeeded in 0.012631614983547479s: {'triggered': 0} +2026-01-19 08:10:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ec98cff9-461b-4930-9f49-b0306afcf4fb] succeeded in 0.018458548991475254s: {'triggered': 0} +2026-01-19 08:11:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a90c9630-18ea-4629-a868-f640cd3dd169] succeeded in 0.015722708019893616s: {'triggered': 0} +2026-01-19 08:12:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9299fda8-3db6-4aea-bd48-fc956eeb3fac] succeeded in 0.011066820996347815s: {'triggered': 0} +2026-01-19 08:13:31 INFO celery.app.trace Task connecthub.ldap.sync[ed36ff49-10a9-4fcf-9575-78bfaed25a19] succeeded in 0.022652768006082624s: 0 +2026-01-19 08:13:32 INFO celery.app.trace Task connecthub.dispatcher.tick[39e0fbfe-d5a8-4895-9db7-701ecfeb03b6] succeeded in 0.004624096007319167s: {'triggered': 0} +2026-01-19 08:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[84cfd5dc-72b3-4f6c-842d-1c8eab1cf05d] succeeded in 0.015505706978728995s: {'triggered': 0} +2026-01-19 08:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9d046dac-4b54-4c60-9823-1e0f48a6e412] succeeded in 0.022125142015283927s: {'triggered': 0} +2026-01-19 08:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cf91a3b6-812d-4bd7-b90d-dbdce1a116d8] succeeded in 0.012081282009603456s: {'triggered': 0} +2026-01-19 08:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e47e37de-b93b-492c-a642-4c08e1bd7d35] succeeded in 0.012624574999790639s: {'triggered': 0} +2026-01-19 08:18:31 INFO celery.app.trace Task connecthub.ldap.sync[259d20a9-8969-433a-ba50-5b225f9270f0] succeeded in 0.047616542025934905s: 0 +2026-01-19 08:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[594c206b-7f7a-4532-851d-9e3c7be923be] succeeded in 0.005449222982861102s: {'triggered': 0} +2026-01-19 08:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[326b7522-9c31-4985-85aa-d98aa059887d] succeeded in 0.017799838999053463s: {'triggered': 0} +2026-01-19 08:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a3ccbe46-e02b-45e2-8cba-8e2e6c11bfa4] succeeded in 0.017849630006821826s: {'triggered': 0} +2026-01-19 08:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[99499545-94b5-48cf-b45d-2cb9bc8c009b] succeeded in 0.020032052998431027s: {'triggered': 0} +2026-01-19 08:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[029168ec-b1fd-4788-a621-76b9b6fab522] succeeded in 0.018721966014709324s: {'triggered': 0} +2026-01-19 08:23:31 INFO celery.app.trace Task connecthub.ldap.sync[2f315c06-a9d1-4d87-8161-42dad6743d19] succeeded in 0.024605482001788914s: 0 +2026-01-19 08:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[df7904eb-bf6e-4a46-9da6-bbf64f14e97f] succeeded in 0.006589058990357444s: {'triggered': 0} +2026-01-19 08:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4a996653-c01c-4dfe-9b59-ed1d4a1c5c09] succeeded in 0.015035330987302586s: {'triggered': 0} +2026-01-19 08:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[08ec102f-7cbb-44dd-a821-f6a93fb5a59e] succeeded in 0.010374109988333657s: {'triggered': 0} +2026-01-19 08:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[2f6cc1dc-5eac-42ab-a010-3131adf08d49] succeeded in 0.014619039022363722s: {'triggered': 0} +2026-01-19 08:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c39323cc-ebb4-4349-b81e-70ba98f0f062] succeeded in 0.02752211401821114s: {'triggered': 0} +2026-01-19 08:28:31 INFO celery.app.trace Task connecthub.ldap.sync[d1c0b8e1-7341-4164-b7a9-bafc42e8448e] succeeded in 0.02975503698689863s: 0 +2026-01-19 08:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ebf3120e-9775-415b-afed-e6b206c46ba7] succeeded in 0.00619889100198634s: {'triggered': 0} +2026-01-19 08:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[85410ca0-5c7f-4506-9806-87877215c6cd] succeeded in 0.016380958986701444s: {'triggered': 0} +2026-01-19 08:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bc17823c-4e7e-4806-8bc7-3b5f1ee79712] succeeded in 0.01620266799000092s: {'triggered': 0} +2026-01-19 08:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[91cadf04-bf11-4bb8-b338-5ca5ff17fe64] succeeded in 0.013710578001337126s: {'triggered': 0} +2026-01-19 08:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[22710984-28d5-4432-babf-dfe6b053cbd3] succeeded in 0.014614162995712832s: {'triggered': 0} +2026-01-19 08:33:31 INFO celery.app.trace Task connecthub.ldap.sync[16bd4742-5ec7-47a9-a202-eee2871f343e] succeeded in 0.03415942200808786s: 0 +2026-01-19 08:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1d24e620-9f24-45a9-9f54-aa0608eded62] succeeded in 0.00536759800161235s: {'triggered': 0} +2026-01-19 08:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3e68ae4b-b9f2-4f3e-ba65-53ad32e3e592] succeeded in 0.04146906599635258s: {'triggered': 0} +2026-01-19 08:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[fac62752-269d-4543-85f3-2b99b744c0e3] succeeded in 0.026419568981509656s: {'triggered': 0} +2026-01-19 08:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[12d8922c-fdc9-4926-918e-0d559e930894] succeeded in 0.010919446009211242s: {'triggered': 0} +2026-01-19 08:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4eb34343-cb45-471f-8170-5124f84dae54] succeeded in 0.0303129960084334s: {'triggered': 0} +2026-01-19 08:38:31 INFO celery.app.trace Task connecthub.ldap.sync[452e9e37-285c-426c-8326-415fe77895c4] succeeded in 0.014958373008994386s: 0 +2026-01-19 08:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[866d7a4d-dff5-4d2d-ae43-290ddb472145] succeeded in 0.0050574709894135594s: {'triggered': 0} +2026-01-19 08:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5cf98b47-4e3b-4316-9812-2819ec84a179] succeeded in 0.033147545997053385s: {'triggered': 0} +2026-01-19 08:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5a8c962e-fd9e-4037-853e-86319cd7d522] succeeded in 0.010195068985922262s: {'triggered': 0} +2026-01-19 08:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7db74935-4193-4da1-bcee-7762f1d10f3b] succeeded in 0.02531748401816003s: {'triggered': 0} +2026-01-19 08:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[28bb029b-de44-4b9b-861a-f79344aa25b1] succeeded in 0.022905268997419626s: {'triggered': 0} +2026-01-19 08:43:31 INFO celery.app.trace Task connecthub.ldap.sync[9cc0ea5f-38f5-411d-afad-97f9f4c11476] succeeded in 0.02213826699880883s: 0 +2026-01-19 08:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ee6ddd6f-3595-4350-8702-b99f2bfda2f7] succeeded in 0.00904069101670757s: {'triggered': 0} +2026-01-19 08:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7b088383-ca41-4ae8-a5f4-394d58f6f081] succeeded in 0.01875188300618902s: {'triggered': 0} +2026-01-19 08:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[47eb00e6-ff92-424d-a2bc-012cd8f98d1c] succeeded in 0.028168199001811445s: {'triggered': 0} +2026-01-19 08:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b7f57b8f-8552-4aaf-a7f0-9759d6786e8a] succeeded in 0.01685607200488448s: {'triggered': 0} +2026-01-19 08:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[83b90f28-44e7-452a-8101-57c7acb8fdc5] succeeded in 0.010372861026553437s: {'triggered': 0} +2026-01-19 08:48:31 INFO celery.app.trace Task connecthub.ldap.sync[ad7c079a-179c-4a92-85de-f1d894e2e4ff] succeeded in 0.016459348000353202s: 0 +2026-01-19 08:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b3c12c9f-dda4-4d12-89be-57d26be2d717] succeeded in 0.005982399015920237s: {'triggered': 0} +2026-01-19 08:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0a54672a-78e5-467d-a0fb-9a1460768f1b] succeeded in 0.0217293229943607s: {'triggered': 0} +2026-01-19 08:50:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7e54f3ed-7532-4b40-b6a3-2038c5f1ac13] succeeded in 0.026016218005679548s: {'triggered': 0} +2026-01-19 08:51:32 INFO celery.app.trace Task connecthub.dispatcher.tick[296fb4c0-8b45-4a3f-872f-f43525ef6c19] succeeded in 0.01714336601435207s: {'triggered': 0} +2026-01-19 08:52:32 INFO celery.app.trace Task connecthub.dispatcher.tick[93610dbf-8a59-40f3-95fc-9ada6ac4b651] succeeded in 0.010966837988235056s: {'triggered': 0} +2026-01-19 08:53:31 INFO celery.app.trace Task connecthub.ldap.sync[33d66feb-6997-49c1-bc87-78c99e479bca] succeeded in 0.017883991007693112s: 0 +2026-01-19 08:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[fcae65ea-852f-47a3-ade0-2839f71242c3] succeeded in 0.006078234000597149s: {'triggered': 0} +2026-01-19 08:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8403b4dd-da69-4efa-9d93-bbac57a6cf8b] succeeded in 0.017022257001372054s: {'triggered': 0} +2026-01-19 08:55:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a1748323-4b79-4277-8d7b-795293fe217b] succeeded in 0.016105212009279057s: {'triggered': 0} +2026-01-19 08:56:32 INFO celery.app.trace Task connecthub.dispatcher.tick[76c5cf94-6357-4b00-8dca-86a215a783e4] succeeded in 0.011065949976909906s: {'triggered': 0} +2026-01-19 08:57:32 INFO celery.app.trace Task connecthub.dispatcher.tick[fd5ec4fc-3072-4ac6-9402-74abd617aa76] succeeded in 0.03274809900904074s: {'triggered': 0} +2026-01-19 08:58:31 INFO celery.app.trace Task connecthub.ldap.sync[ffbdee1a-a747-467f-9e44-0be92b6d9ed0] succeeded in 0.026519498002016917s: 0 +2026-01-19 08:58:32 INFO celery.app.trace Task connecthub.dispatcher.tick[41d01514-8d7a-46d0-ac7d-7b98f29d6de8] succeeded in 0.0045033479982521385s: {'triggered': 0} +2026-01-19 08:59:32 INFO celery.app.trace Task connecthub.dispatcher.tick[da1341d2-ed17-49c0-9019-080987ba511a] succeeded in 0.020607229991583154s: {'triggered': 0} +2026-01-19 09:00:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d03847e6-f3b3-48a6-8849-8522cd9f49b3] succeeded in 0.010975743003655225s: {'triggered': 0} +2026-01-19 09:01:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7b756529-e2da-4f28-8e9b-b61c153c7b2c] succeeded in 0.009669544000644237s: {'triggered': 0} +2026-01-19 09:02:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3bd44b12-6bf1-407d-942c-d69f9ba00044] succeeded in 0.007649481995031238s: {'triggered': 0} +2026-01-19 09:03:31 INFO celery.app.trace Task connecthub.ldap.sync[f8d72012-04e5-41f9-a4a8-147970aa1e7b] succeeded in 0.01011059299344197s: 0 +2026-01-19 09:03:32 INFO celery.app.trace Task connecthub.dispatcher.tick[20b4cb4d-5143-4c97-a5e9-494cda82cb82] succeeded in 0.005408402008470148s: {'triggered': 0} +2026-01-19 09:04:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9441bab4-e12b-413a-8c73-96b23c73e1f8] succeeded in 0.01959610200719908s: {'triggered': 0} +2026-01-19 09:05:32 INFO celery.app.trace Task connecthub.dispatcher.tick[78b52de7-8156-4c7b-b99c-629332e743ef] succeeded in 0.010305836010957137s: {'triggered': 0} +2026-01-19 09:06:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4f479bcb-c4e5-4f3b-9b5b-42b1c3fc3fe3] succeeded in 0.020701772009488195s: {'triggered': 0} +2026-01-19 09:07:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5adb787b-3ccc-4868-952b-cfb92c3434d2] succeeded in 0.018600064009660855s: {'triggered': 0} +2026-01-19 09:08:31 INFO celery.app.trace Task connecthub.ldap.sync[835eae44-1b28-40c3-9593-0b1619b57f98] succeeded in 0.011258328973781317s: 0 +2026-01-19 09:08:32 INFO celery.app.trace Task connecthub.dispatcher.tick[97cf714f-836f-43ee-bdce-49aec5b9ec81] succeeded in 0.0073109419899992645s: {'triggered': 0} +2026-01-19 09:09:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9fe8bcc6-b4b6-4678-a9a2-36b4cedf08df] succeeded in 0.011500080989208072s: {'triggered': 0} +2026-01-19 09:10:32 INFO celery.app.trace Task connecthub.dispatcher.tick[577c66f1-d166-460c-b92f-4b094f9a7a51] succeeded in 0.0192552320077084s: {'triggered': 0} +2026-01-19 09:11:32 INFO celery.app.trace Task connecthub.dispatcher.tick[041c135f-5037-492c-bc23-e1cdc803afa3] succeeded in 0.01368316198932007s: {'triggered': 0} +2026-01-19 09:12:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c855f350-ba0d-45fe-8046-6bbf2577c0b9] succeeded in 0.014339705987367779s: {'triggered': 0} +2026-01-19 09:13:31 INFO celery.app.trace Task connecthub.ldap.sync[2c7d21b8-1e92-4a5d-9513-82fd1056d746] succeeded in 0.02630081499228254s: 0 +2026-01-19 09:13:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9fb21847-4210-4833-8c3c-f3c3f53dab93] succeeded in 0.001994672988075763s: {'triggered': 0} +2026-01-19 09:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e6f06425-e80a-4099-b5eb-49e3374ea520] succeeded in 0.03226197598269209s: {'triggered': 0} +2026-01-19 09:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[389d6e59-298b-4084-95bb-7c3b06296b4b] succeeded in 0.01264337301836349s: {'triggered': 0} +2026-01-19 09:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9dd8214a-5912-4c7e-9173-d5fe7e2f00b6] succeeded in 0.022977446991717443s: {'triggered': 0} +2026-01-19 09:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c2681b04-8cd8-4f10-81a5-85b536b318a7] succeeded in 0.015924508013995364s: {'triggered': 0} +2026-01-19 09:18:31 INFO celery.app.trace Task connecthub.ldap.sync[1fbd7fbd-44a3-4ad5-9c8b-a8685f6d6009] succeeded in 0.02171909000026062s: 0 +2026-01-19 09:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[aab7b89c-2050-4864-8495-c53d19d80e3f] succeeded in 0.004666975000873208s: {'triggered': 0} +2026-01-19 09:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[859b1262-27a8-40a4-b6a5-5086a5d81c35] succeeded in 0.02436874300474301s: {'triggered': 0} +2026-01-19 09:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e9870e42-0b0e-407c-b74e-1c5535ddde55] succeeded in 0.01596010199864395s: {'triggered': 0} +2026-01-19 09:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1202f98a-cbe4-40ba-83d2-6f2a4a5acebe] succeeded in 0.02553082100348547s: {'triggered': 0} +2026-01-19 09:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8298647f-887a-4359-a614-1ef919b2a77d] succeeded in 0.022008439991623163s: {'triggered': 0} +2026-01-19 09:23:31 INFO celery.app.trace Task connecthub.ldap.sync[36f041c5-5c90-411b-87b4-51452c545fca] succeeded in 0.018937372020445764s: 0 +2026-01-19 09:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cf562afc-5a68-4635-84df-d16a5ff2b915] succeeded in 0.004592706012772396s: {'triggered': 0} +2026-01-19 09:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[93a3de40-20d3-465e-b493-73cfae129631] succeeded in 0.01595216602436267s: {'triggered': 0} +2026-01-19 09:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ebd4f759-4dbb-4ec4-8063-5a62c057a6f4] succeeded in 0.011537810001755133s: {'triggered': 0} +2026-01-19 09:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[70acf560-7f9f-4cb1-8d4b-bacc17a72659] succeeded in 0.03159444298944436s: {'triggered': 0} +2026-01-19 09:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4ebcbb11-a881-4463-bc65-703b77827dcf] succeeded in 0.021148073981748894s: {'triggered': 0} +2026-01-19 09:28:31 INFO celery.app.trace Task connecthub.ldap.sync[c1cae2e8-1ab4-4ab6-84bc-ee71a8898cc7] succeeded in 0.019288113981019706s: 0 +2026-01-19 09:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1ef530c6-4107-4b5b-9e44-56b23ee640b7] succeeded in 0.004769767983816564s: {'triggered': 0} +2026-01-19 09:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c61593dd-71ed-4801-a334-e5237a2ee891] succeeded in 0.01750210701720789s: {'triggered': 0} +2026-01-19 09:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[24505425-9c22-430b-9f1d-ec9186e9f532] succeeded in 0.011476834013592452s: {'triggered': 0} +2026-01-19 09:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f4188380-2286-4337-ad36-2249c3950791] succeeded in 0.022591832996113226s: {'triggered': 0} +2026-01-19 09:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1b683f29-5cec-4540-ab93-cb5200712254] succeeded in 0.017991442000493407s: {'triggered': 0} +2026-01-19 09:33:31 INFO celery.app.trace Task connecthub.ldap.sync[609f502c-1cf1-40fd-94cc-697b519e7087] succeeded in 0.03632046899292618s: 0 +2026-01-19 09:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[664341df-1b84-4b7c-be89-f719591f0683] succeeded in 0.009017283999128267s: {'triggered': 0} +2026-01-19 09:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[33906946-bfa1-41c4-a49c-3f60be00fdc9] succeeded in 0.010277081019012257s: {'triggered': 0} +2026-01-19 09:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[adeebd91-d334-4814-9b83-40d069e3dc38] succeeded in 0.013212596997618675s: {'triggered': 0} +2026-01-19 09:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9277aaab-5556-4e80-b432-cb2d643be289] succeeded in 0.015865892986766994s: {'triggered': 0} +2026-01-19 09:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3f5dcf16-190e-4387-af41-648b80869d58] succeeded in 0.003121301007922739s: {'triggered': 0} +2026-01-19 09:38:31 INFO celery.app.trace Task connecthub.ldap.sync[18ba86df-c051-48e2-adf9-b622283f674c] succeeded in 0.013523028988856822s: 0 +2026-01-19 09:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[caec60b3-9e46-407b-8d02-f5919fb5f4f6] succeeded in 0.006493101012893021s: {'triggered': 0} +2026-01-19 09:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[2fc00be8-4ed9-43e4-bd39-8ed62c759885] succeeded in 0.006420435005566105s: {'triggered': 0} +2026-01-19 09:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4341136d-7d68-44f2-80e6-6b73c4163551] succeeded in 0.004816775006474927s: {'triggered': 0} +2026-01-19 09:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[70c8ba16-4d1b-4e83-a73e-8df47d6d29ca] succeeded in 0.014196733012795448s: {'triggered': 0} +2026-01-19 09:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6f19b5d4-ecb2-4ea5-a318-d058ea7eb3ac] succeeded in 0.005579301010584459s: {'triggered': 0} +2026-01-19 09:43:31 INFO celery.app.trace Task connecthub.ldap.sync[2d8e721c-cc51-4c83-8ea9-836ba2de15b0] succeeded in 0.005448684009024873s: 0 +2026-01-19 09:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[db5b52de-4c3c-4506-b80c-9817b4b1698e] succeeded in 0.0050256410031579435s: {'triggered': 0} +2026-01-19 09:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[787c9b3d-498b-4229-bab2-5d19cfa2ac4d] succeeded in 0.011215120000997558s: {'triggered': 0} +2026-01-19 09:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[24ce1d99-c0a1-48b4-b161-a7f5297b5dde] succeeded in 0.00835932997870259s: {'triggered': 0} +2026-01-19 09:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f5742814-3abb-4c42-9464-0b9838c3d775] succeeded in 0.005812561983475462s: {'triggered': 0} +2026-01-19 09:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0a2d1329-2810-4cf6-87bb-fd3eb51c287f] succeeded in 0.0075067020079586655s: {'triggered': 0} +2026-01-19 09:48:31 INFO celery.app.trace Task connecthub.ldap.sync[f325d30e-e840-4fcf-86f4-3549b0e30583] succeeded in 0.0074098130280617625s: 0 +2026-01-19 09:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e804e9af-6c68-40e2-99ff-c4b5ab31f3c4] succeeded in 0.004058344988152385s: {'triggered': 0} +2026-01-19 09:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5ca677cb-446b-4a71-85a3-df65efe0a7a2] succeeded in 0.005817475001094863s: {'triggered': 0} +2026-01-19 09:50:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1e780240-27be-4f03-9e79-03316d95f58b] succeeded in 0.008284898998681456s: {'triggered': 0} +2026-01-19 09:51:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dd57b3ce-e744-4ad0-8eab-a5327d5e4425] succeeded in 0.009823570988373831s: {'triggered': 0} +2026-01-19 09:52:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8962a1c5-928d-4c0f-a47b-bfea81874429] succeeded in 0.008898765983758494s: {'triggered': 0} +2026-01-19 09:53:31 INFO celery.app.trace Task connecthub.ldap.sync[c99d02c1-c31c-4dfa-ae67-3a645bd1f2e2] succeeded in 0.0060141840076539665s: 0 +2026-01-19 09:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[393a8223-d53e-4b38-bccb-f305cf868d02] succeeded in 0.004266345989890397s: {'triggered': 0} +2026-01-19 09:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[293ffdc2-866c-424a-a1d3-ac93272e26bd] succeeded in 0.01016061901464127s: {'triggered': 0} +2026-01-19 09:55:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7906b860-db0a-4717-ae21-73446f9e309d] succeeded in 0.005484830995555967s: {'triggered': 0} +2026-01-19 09:56:32 INFO celery.app.trace Task connecthub.dispatcher.tick[04cfecd9-4030-4bbc-a8c1-b2d7d309e3c4] succeeded in 0.009803686989471316s: {'triggered': 0} +2026-01-19 09:57:32 INFO celery.app.trace Task connecthub.dispatcher.tick[df192985-2bb9-4515-a262-ad44078d9668] succeeded in 0.006574222003109753s: {'triggered': 0} +2026-01-19 09:58:31 INFO celery.app.trace Task connecthub.ldap.sync[6f60cd21-ac56-4441-95f3-06eb0f3a65d9] succeeded in 0.007027467014268041s: 0 +2026-01-19 09:58:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b232b3ab-2365-4450-9ec1-ee9175f155c9] succeeded in 0.00232779499492608s: {'triggered': 0} +2026-01-19 09:59:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ee8a1add-521c-44d0-9f7d-d4130d022a57] succeeded in 0.007326466991798952s: {'triggered': 0} +2026-01-19 10:00:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cd86e944-c068-4f48-89a9-71aa9001b625] succeeded in 0.006468601990491152s: {'triggered': 0} +2026-01-19 10:01:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b0ea468c-ed02-48b4-bb05-a7a8523fd91f] succeeded in 0.00807835700106807s: {'triggered': 0} +2026-01-19 10:02:32 INFO celery.app.trace Task connecthub.dispatcher.tick[edd0c253-cba5-4bfe-9063-6a156a638ad4] succeeded in 0.006302434019744396s: {'triggered': 0} +2026-01-19 10:03:31 INFO celery.app.trace Task connecthub.ldap.sync[3081e698-9679-4538-a0cd-60696418ee96] succeeded in 0.018264426005771384s: 0 +2026-01-19 10:03:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c32d5d4d-806c-432e-998c-fc9edc1cead2] succeeded in 0.004618262988515198s: {'triggered': 0} +2026-01-19 10:04:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d0f90919-1187-4602-8780-eafc5349296b] succeeded in 0.004064886015839875s: {'triggered': 0} +2026-01-19 10:05:32 INFO celery.app.trace Task connecthub.dispatcher.tick[576c1287-2515-46c6-b4e1-12003a1f8811] succeeded in 0.010032527992734686s: {'triggered': 0} +2026-01-19 10:06:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8d0359f7-00be-4add-bcf6-8f1ac9b75f08] succeeded in 0.005792182986624539s: {'triggered': 0} +2026-01-19 10:07:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3efd75eb-b53a-4c74-92eb-8143a87d9e60] succeeded in 0.0031006530043669045s: {'triggered': 0} +2026-01-19 10:08:31 INFO celery.app.trace Task connecthub.ldap.sync[e1284054-7e10-4b80-8384-1cabcf4118b2] succeeded in 0.00828960700891912s: 0 +2026-01-19 10:08:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e9260d53-26ef-4c42-8e26-6cd1b18f45cf] succeeded in 0.005470307020004839s: {'triggered': 0} +2026-01-19 10:09:32 INFO celery.app.trace Task connecthub.dispatcher.tick[012d22ba-8617-4b0a-afff-4be5dc1862eb] succeeded in 0.007999557012226433s: {'triggered': 0} +2026-01-19 10:10:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4ce769fb-3b72-42c5-97a7-3eb6c3cc0956] succeeded in 0.003895650996128097s: {'triggered': 0} +2026-01-19 10:11:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3403723a-dff3-4f00-ac1f-e0b071b1ff1a] succeeded in 0.004551172984065488s: {'triggered': 0} +2026-01-19 10:12:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d1431087-9318-4704-ab6b-2cd0f31d6d5e] succeeded in 0.007406869990518317s: {'triggered': 0} +2026-01-19 10:13:31 INFO celery.app.trace Task connecthub.ldap.sync[81bd785f-0f19-42c2-b4fd-78a793594fea] succeeded in 0.008672834985191002s: 0 +2026-01-19 10:13:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c394d6a4-911d-4bc9-8d39-f6aff4868dac] succeeded in 0.0034002249885816127s: {'triggered': 0} +2026-01-19 10:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[91be3e8c-b3b5-4c83-8ae8-88268f9643b3] succeeded in 0.0028860149905085564s: {'triggered': 0} +2026-01-19 10:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6bbbf6d5-2bd1-482a-8940-89f7926bf44e] succeeded in 0.004665681975893676s: {'triggered': 0} +2026-01-19 10:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9a6004cb-4fd1-4c04-a3c0-f65fd8257f14] succeeded in 0.0047016819880809635s: {'triggered': 0} +2026-01-19 10:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[089e481e-f9bb-46e1-8a69-bc99351dbf2d] succeeded in 0.0036247780080884695s: {'triggered': 0} +2026-01-19 10:18:31 INFO celery.app.trace Task connecthub.ldap.sync[ca4e5dbf-9c02-45bc-900b-5326ff53f491] succeeded in 0.005603849975159392s: 0 +2026-01-19 10:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d19ddf72-d496-46be-a457-7d7a61300922] succeeded in 0.0034491769911255687s: {'triggered': 0} +2026-01-19 10:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[00cd6118-f459-4b6f-ae08-d2accc662280] succeeded in 0.014020217000506818s: {'triggered': 0} +2026-01-19 10:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[505aaa89-199d-47ee-9476-506629f8315d] succeeded in 0.004586766008287668s: {'triggered': 0} +2026-01-19 10:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[377cb051-fe51-42bc-abb3-3be9cae83930] succeeded in 0.009323492005933076s: {'triggered': 0} +2026-01-19 10:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[38722fee-22cb-4c24-a6e1-caae99385627] succeeded in 0.004064388980623335s: {'triggered': 0} +2026-01-19 10:23:31 INFO celery.app.trace Task connecthub.ldap.sync[35e37c16-1e6f-444a-a373-0d5cca6eab73] succeeded in 0.010736664000432938s: 0 +2026-01-19 10:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[166b2075-6c47-4f9e-9788-9423db650c74] succeeded in 0.002679552009794861s: {'triggered': 0} +2026-01-19 10:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d222a870-e18b-4fe6-be33-fcb36e9e437f] succeeded in 0.007820111000910401s: {'triggered': 0} +2026-01-19 10:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6d7c7f3a-df55-4310-8ef4-302b20c0fb29] succeeded in 0.0029985109867993742s: {'triggered': 0} +2026-01-19 10:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[934c557f-eb4e-4b40-9e59-c85b077af229] succeeded in 0.003007366001838818s: {'triggered': 0} +2026-01-19 10:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[91569551-1d69-45d5-9ebb-8a9f05eb2822] succeeded in 0.0121562099957373s: {'triggered': 0} +2026-01-19 10:28:31 INFO celery.app.trace Task connecthub.ldap.sync[120412c0-1ef6-4859-a189-c6d06ee49210] succeeded in 0.0036688859981950372s: 0 +2026-01-19 10:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[494c50de-a4ab-45ac-880b-1123ce9ab6a7] succeeded in 0.003391845995793119s: {'triggered': 0} +2026-01-19 10:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ec38d405-b695-499a-9c5f-a13a6fb147ab] succeeded in 0.0052487880166154355s: {'triggered': 0} +2026-01-19 10:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4532e318-3d06-4001-a3ef-4ff9936a7cab] succeeded in 0.01299550902331248s: {'triggered': 0} +2026-01-19 10:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[479996f7-2ae1-477c-845a-ba8c6f4338be] succeeded in 0.0022238270030356944s: {'triggered': 0} +2026-01-19 10:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[22c4e4b0-3f42-4554-808e-f7a8e3a0260b] succeeded in 0.005602797988103703s: {'triggered': 0} +2026-01-19 10:33:31 INFO celery.app.trace Task connecthub.ldap.sync[c63e5b79-aefb-42c0-a4ac-e5012bf8058e] succeeded in 0.015964645019266754s: 0 +2026-01-19 10:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6e7959fb-7342-4ee6-b115-dc69a3dc1194] succeeded in 0.004947047971654683s: {'triggered': 0} +2026-01-19 10:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[801509ba-d3ff-4487-89af-946bea0cb270] succeeded in 0.004682306986069307s: {'triggered': 0} +2026-01-19 10:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6e36ce32-acb5-426d-8fca-d33af0a0ba07] succeeded in 0.005865477025508881s: {'triggered': 0} +2026-01-19 10:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[62d8f697-1adc-4420-b0d1-680f72bbd2b6] succeeded in 0.009616780997021124s: {'triggered': 0} +2026-01-19 10:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6f5afe6e-40bc-44c5-a1c1-7a10a4e35a25] succeeded in 0.0029120919934939593s: {'triggered': 0} +2026-01-19 10:38:31 INFO celery.app.trace Task connecthub.ldap.sync[dced53cf-9dc0-4d5a-bdf1-1efc731d2945] succeeded in 0.004617095983121544s: 0 +2026-01-19 10:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[2dc56dd7-c1d9-416b-ab4a-d4c4d4f9287f] succeeded in 0.002590007003163919s: {'triggered': 0} +2026-01-19 10:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e63b82bd-5cea-46f4-b691-e1af7f930057] succeeded in 0.008803358010482043s: {'triggered': 0} +2026-01-19 10:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3b719962-654e-407f-b1ff-277a7c80800b] succeeded in 0.011740991001715884s: {'triggered': 0} +2026-01-19 10:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[38061b70-6ce2-4e06-a843-f3b7158e2585] succeeded in 0.0023121739795897156s: {'triggered': 0} +2026-01-19 10:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[695d2206-5b5f-411b-bed4-064bade539b0] succeeded in 0.006211016996530816s: {'triggered': 0} +2026-01-19 10:43:31 INFO celery.app.trace Task connecthub.ldap.sync[051ea363-a058-4386-9b56-59298c33789e] succeeded in 0.006778436014428735s: 0 +2026-01-19 10:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e71c39ac-e7ce-43c4-9ff1-ac6c31acdf0c] succeeded in 0.004736013012006879s: {'triggered': 0} +2026-01-19 10:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[54cb5106-2b95-41be-8330-37b65ff72061] succeeded in 0.007581229991046712s: {'triggered': 0} +2026-01-19 10:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e4291fdb-a122-47c9-b8e6-b9a13e6622fb] succeeded in 0.004144970007473603s: {'triggered': 0} +2026-01-19 10:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dd052b5d-c54d-4f59-a68a-2d635cd76f7e] succeeded in 0.003309175983304158s: {'triggered': 0} +2026-01-19 10:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e0801897-ff75-4788-b7a4-4da265c72d59] succeeded in 0.004324387002270669s: {'triggered': 0} +2026-01-19 10:48:31 INFO celery.app.trace Task connecthub.ldap.sync[7ad4c64c-428c-467e-8b25-2dad9ef30fd2] succeeded in 0.0062128930003382266s: 0 +2026-01-19 10:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[81bb1398-a489-4d57-b040-5b47fde3c816] succeeded in 0.0032381759956479073s: {'triggered': 0} +2026-01-19 10:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dc42f5a8-4e51-4171-81a7-84d5686f8c7e] succeeded in 0.013803871988784522s: {'triggered': 0} +2026-01-19 10:50:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3bf9ec70-f849-457e-8aa6-6c3bc1ddd3e1] succeeded in 0.004966221982613206s: {'triggered': 0} +2026-01-19 10:51:32 INFO celery.app.trace Task connecthub.dispatcher.tick[96beacc6-fdd7-41f1-a397-0708ee4d298a] succeeded in 0.007132017984986305s: {'triggered': 0} +2026-01-19 10:52:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c3077581-3610-46e5-9898-b87428a0c788] succeeded in 0.003735676989890635s: {'triggered': 0} +2026-01-19 10:53:31 INFO celery.app.trace Task connecthub.ldap.sync[4c335d5f-e4af-4711-aeab-9db526630437] succeeded in 0.008146106003550813s: 0 +2026-01-19 10:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6a9eae1c-5f3c-472c-811e-2cb3a9ac81ae] succeeded in 0.003512425988446921s: {'triggered': 0} +2026-01-19 10:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bded1b08-57ce-4913-9576-c8aff97e7dc1] succeeded in 0.006699852005112916s: {'triggered': 0} +2026-01-19 10:55:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3572feb5-08ba-4505-97a9-38c453163c8b] succeeded in 0.003006299986736849s: {'triggered': 0} +2026-01-19 10:56:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8a258bc0-ea09-4282-b48d-8ae318456b9d] succeeded in 0.007890522014349699s: {'triggered': 0} +2026-01-19 10:57:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e6a84c39-a639-4cf2-a5a1-2f9c036c824c] succeeded in 0.002699132019188255s: {'triggered': 0} +2026-01-19 10:58:31 INFO celery.app.trace Task connecthub.ldap.sync[95bbb1d6-3fc0-4e84-97d6-2ecaaace1c9a] succeeded in 0.006017641979269683s: 0 +2026-01-19 10:58:32 INFO celery.app.trace Task connecthub.dispatcher.tick[3fa123b4-ee36-42cc-b627-e22d85f37895] succeeded in 0.003967622003983706s: {'triggered': 0} +2026-01-19 10:59:32 INFO celery.app.trace Task connecthub.dispatcher.tick[860476a2-6126-482c-95d4-c3d0787f354a] succeeded in 0.009685819008154795s: {'triggered': 0} +2026-01-19 11:00:32 INFO celery.app.trace Task connecthub.dispatcher.tick[458cd383-bf61-4714-8af8-86d11b3c422c] succeeded in 0.004870076023507863s: {'triggered': 0} +2026-01-19 11:01:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4bb24e4f-1fcb-44a8-9864-4a2f218d052d] succeeded in 0.00615062698489055s: {'triggered': 0} +2026-01-19 11:02:32 INFO celery.app.trace Task connecthub.dispatcher.tick[59590b14-53e8-4f9e-b081-292fec9ae306] succeeded in 0.0042473539942875504s: {'triggered': 0} +2026-01-19 11:03:31 INFO celery.app.trace Task connecthub.ldap.sync[4d6c9b19-b5c5-492e-8298-60ba3579b52e] succeeded in 0.025835085019934922s: 0 +2026-01-19 11:03:32 INFO celery.app.trace Task connecthub.dispatcher.tick[09b73dd8-2961-44f6-b239-8e71b72e7cb8] succeeded in 0.005683445022441447s: {'triggered': 0} +2026-01-19 11:04:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b03aa6b6-5888-4b09-b286-364c64bcd5ea] succeeded in 0.0026308430242352188s: {'triggered': 0} +2026-01-19 11:05:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d413f774-a75e-4a39-8533-94330f1e0872] succeeded in 0.004958475998137146s: {'triggered': 0} +2026-01-19 11:06:32 INFO celery.app.trace Task connecthub.dispatcher.tick[78de20b0-9631-446d-bbeb-044e47b54472] succeeded in 0.01321762299630791s: {'triggered': 0} +2026-01-19 11:07:32 INFO celery.app.trace Task connecthub.dispatcher.tick[eae7ced5-0a51-497f-92f0-0383320db3ce] succeeded in 0.003218883997760713s: {'triggered': 0} +2026-01-19 11:08:31 INFO celery.app.trace Task connecthub.ldap.sync[58f481fc-3917-43a4-8604-28f8ce55cadc] succeeded in 0.007142645976273343s: 0 +2026-01-19 11:08:32 INFO celery.app.trace Task connecthub.dispatcher.tick[414e739a-5db0-4b5a-8c19-172c6ac513a6] succeeded in 0.00494330600486137s: {'triggered': 0} +2026-01-19 11:09:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0b28aef9-aa70-479b-ae08-2a00f1abacc9] succeeded in 0.008190900000045076s: {'triggered': 0} +2026-01-19 11:10:32 INFO celery.app.trace Task connecthub.dispatcher.tick[602f17d7-b25c-4885-9c23-89c0945319e2] succeeded in 0.011446326010627672s: {'triggered': 0} +2026-01-19 11:11:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ec3e5e93-2237-48cd-8053-0c2883859a73] succeeded in 0.0032502179965376854s: {'triggered': 0} +2026-01-19 11:12:32 INFO celery.app.trace Task connecthub.dispatcher.tick[93ff9db1-7cd1-4f0c-8d4b-012ea9820e0f] succeeded in 0.010389366012532264s: {'triggered': 0} +2026-01-19 11:13:31 INFO celery.app.trace Task connecthub.ldap.sync[e79ee82a-f9a8-4999-910d-96bcc651e50b] succeeded in 0.010449544002767652s: 0 +2026-01-19 11:13:32 INFO celery.app.trace Task connecthub.dispatcher.tick[40178830-2a89-42b4-a3fa-7d51590f6262] succeeded in 0.004784682998433709s: {'triggered': 0} +2026-01-19 11:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7e80cdf5-cae1-47c0-bc77-fd7190f777de] succeeded in 0.004065929009811953s: {'triggered': 0} +2026-01-19 11:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0011d410-b003-4905-bd14-e730a1e473de] succeeded in 0.006181511998875067s: {'triggered': 0} +2026-01-19 11:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7a0ed242-72d5-49d8-a919-9b7f54356a5e] succeeded in 0.031943531008437276s: {'triggered': 0} +2026-01-19 11:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[80701f60-f3b3-4ae7-8dd7-6b86ea2f345f] succeeded in 0.0042039410036522895s: {'triggered': 0} +2026-01-19 11:18:31 INFO celery.app.trace Task connecthub.ldap.sync[06e5c9b5-7e56-4dd9-87ea-51818bc87723] succeeded in 0.008332840981893241s: 0 +2026-01-19 11:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[394b68e6-4003-4a8d-b69a-b7d91a83a8f4] succeeded in 0.004390485002659261s: {'triggered': 0} +2026-01-19 11:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d7bb3e09-a68f-44b6-be9d-aff27f982f8b] succeeded in 0.004312393022701144s: {'triggered': 0} +2026-01-19 11:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5b2f6378-3f46-4e0a-b452-52d44ee335d8] succeeded in 0.004921062005450949s: {'triggered': 0} +2026-01-19 11:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a82acaaa-c119-471d-b730-37bad83895d2] succeeded in 0.027181338024092838s: {'triggered': 0} +2026-01-19 11:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[024f160b-d56d-40d5-bc2b-fdae0a414fba] succeeded in 0.004231597005855292s: {'triggered': 0} +2026-01-19 11:23:31 INFO celery.app.trace Task connecthub.ldap.sync[f2bb6786-ef44-4459-beff-c9f83a43b565] succeeded in 0.005717018997529522s: 0 +2026-01-19 11:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b01f453f-99e9-416f-8f61-69c48a157b30] succeeded in 0.0027309569995850325s: {'triggered': 0} +2026-01-19 11:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1735c192-cbbd-443d-98ee-9385bab5e4b6] succeeded in 0.01602150799590163s: {'triggered': 0} +2026-01-19 11:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[2236f318-f56f-483e-a15a-20668a77e97f] succeeded in 0.003611552994698286s: {'triggered': 0} +2026-01-19 11:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ffdc3bec-db27-4ed2-9acc-cf4c0b2b1f34] succeeded in 0.0037775550154037774s: {'triggered': 0} +2026-01-19 11:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a81297df-a902-4f5f-ae23-be32c3386da3] succeeded in 0.01329512899974361s: {'triggered': 0} +2026-01-19 11:28:31 INFO celery.app.trace Task connecthub.ldap.sync[c5ca6328-a57d-4915-84b1-4829f2387ac7] succeeded in 0.005017766990931705s: 0 +2026-01-19 11:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[34388694-dfde-4b03-a1eb-e4577102cd63] succeeded in 0.0023637170088477433s: {'triggered': 0} +2026-01-19 11:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1bca96ad-d098-4a09-8267-814e237964f8] succeeded in 0.004246347991283983s: {'triggered': 0} +2026-01-19 11:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[98216629-4ce5-4424-8156-ade32cdf44c9] succeeded in 0.007108017016435042s: {'triggered': 0} +2026-01-19 11:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[51dc3cb8-97ec-4eb5-824b-1016b6d6e6b1] succeeded in 0.013405086996499449s: {'triggered': 0} +2026-01-19 11:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[81c986ba-b938-4919-853f-5c6a73228a35] succeeded in 0.004900816013105214s: {'triggered': 0} +2026-01-19 11:33:31 INFO celery.app.trace Task connecthub.ldap.sync[df736a13-10c6-47b7-9185-4b183bd98fd8] succeeded in 0.0019206919823773205s: 0 +2026-01-19 11:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9374753c-a5fb-4229-9d4a-2b287e2217c4] succeeded in 0.0038029259885661304s: {'triggered': 0} +2026-01-19 11:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[692de17f-394d-448d-bbf1-5915dcc0ce3c] succeeded in 0.026188427000306547s: {'triggered': 0} +2026-01-19 11:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d0952c6b-063f-4f32-b660-6ba9a58d4be6] succeeded in 0.004844373994274065s: {'triggered': 0} +2026-01-19 11:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cc383271-390b-499c-9ef5-d33bd9398a1f] succeeded in 0.0034084350045304745s: {'triggered': 0} +2026-01-19 11:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6ca2174a-fbe0-4040-8dcc-61bfa1a73f02] succeeded in 0.00867342101992108s: {'triggered': 0} +2026-01-19 11:38:31 INFO celery.app.trace Task connecthub.ldap.sync[f046ae90-b890-413b-91b1-8656f069dfee] succeeded in 0.01110433301073499s: 0 +2026-01-19 11:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d38054a1-f45e-48d2-a39b-bef7fbc550c8] succeeded in 0.0053824779752176255s: {'triggered': 0} +2026-01-19 11:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[32eba574-1874-4bd8-83c5-950f7b7b5e1d] succeeded in 0.006390648981323466s: {'triggered': 0} +2026-01-19 11:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e6507547-00f3-4aa1-ae25-461507eecfe4] succeeded in 0.00849282299168408s: {'triggered': 0} +2026-01-19 11:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5df8fd1e-da23-463a-ab31-21e5ca295fe3] succeeded in 0.010469998989719898s: {'triggered': 0} +2026-01-19 11:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[64678991-ec34-4286-90d3-b8395e2fe819] succeeded in 0.005292271001962945s: {'triggered': 0} +2026-01-19 11:43:31 INFO celery.app.trace Task connecthub.ldap.sync[c702af91-09bb-46fd-a89b-e259b2e146fc] succeeded in 0.005918481998378411s: 0 +2026-01-19 11:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f921d10a-48ba-4645-a3ad-f9a5e0d967f9] succeeded in 0.004401600977871567s: {'triggered': 0} +2026-01-19 11:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[437a252e-072f-4cb8-a088-b3f5d52fbf00] succeeded in 0.024013387999730185s: {'triggered': 0} +2026-01-19 11:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[50a5ad5b-3ed3-421a-8c3d-c2f0aa78cc08] succeeded in 0.004977603006409481s: {'triggered': 0} +2026-01-19 11:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[672fa7ee-e22d-41cd-accb-9f535fd16a4c] succeeded in 0.010468374995980412s: {'triggered': 0} +2026-01-19 11:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[276b0f42-b118-4a9b-a701-1c9cc2eab96f] succeeded in 0.004123434016946703s: {'triggered': 0} +2026-01-19 11:48:31 INFO celery.app.trace Task connecthub.ldap.sync[d6a46981-2e31-4cd8-b7d6-dda32a7b67db] succeeded in 0.004387350985780358s: 0 +2026-01-19 11:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[475b0cba-42aa-4608-9b7b-a6021ccdd893] succeeded in 0.004353641998022795s: {'triggered': 0} +2026-01-19 11:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e70a613b-b4ba-4770-a416-44392783f00c] succeeded in 0.009456456988118589s: {'triggered': 0} +2026-01-19 11:50:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8fc7d5c0-5143-40c3-8c8c-28de8b46e043] succeeded in 0.006434554001316428s: {'triggered': 0} +2026-01-19 11:51:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6acf40fc-f58f-4dcc-8847-57884ecfd20d] succeeded in 0.018008473998634145s: {'triggered': 0} +2026-01-19 11:52:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4efcdde7-f08b-499b-ac4c-39b65058b536] succeeded in 0.0054301180061884224s: {'triggered': 0} +2026-01-19 11:53:31 INFO celery.app.trace Task connecthub.ldap.sync[8d6c2059-a06f-4f7d-99ca-b556a18a87a6] succeeded in 0.0042410470196045935s: 0 +2026-01-19 11:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[28ecd288-aee6-4463-8211-46fbb7404f01] succeeded in 0.002438711002469063s: {'triggered': 0} +2026-01-19 11:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[30c75e2a-3f88-46e7-bd13-6d3dd067f355] succeeded in 0.004836881009396166s: {'triggered': 0} +2026-01-19 11:55:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4cc96d29-a3e7-4367-8feb-dd61a834ea32] succeeded in 0.016684103989973664s: {'triggered': 0} +2026-01-19 11:56:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d289f728-02cf-42fa-a460-5174a08dabb8] succeeded in 0.00478051500977017s: {'triggered': 0} +2026-01-19 11:57:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a7da4439-d810-4a88-909c-a94f67b6a947] succeeded in 0.004673971998272464s: {'triggered': 0} +2026-01-19 11:58:31 INFO celery.app.trace Task connecthub.ldap.sync[c2001d22-f172-476b-8edd-7ad86eec2240] succeeded in 0.009103285003220662s: 0 +2026-01-19 11:58:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a202a082-f0b9-4c6d-97e4-4815028f8dbf] succeeded in 0.006327191018499434s: {'triggered': 0} +2026-01-19 11:59:32 INFO celery.app.trace Task connecthub.dispatcher.tick[203ce82e-b72b-4ffd-a170-54a9268e8f0e] succeeded in 0.005488979018991813s: {'triggered': 0} +2026-01-19 12:00:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bd0e3680-6cea-4bef-b83f-96818519b190] succeeded in 0.007764488982502371s: {'triggered': 0} +2026-01-19 12:01:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d7e4e4c7-2550-450d-a7e0-7659733f6dec] succeeded in 0.0126354249950964s: {'triggered': 0} +2026-01-19 12:02:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f520ce5a-8a49-45d0-96b0-b3a1a0c256d2] succeeded in 0.002689676999580115s: {'triggered': 0} +2026-01-19 12:03:31 INFO celery.app.trace Task connecthub.ldap.sync[7bb98b61-de7c-4046-a0ff-730d6ea6d3f5] succeeded in 0.0038561809924431145s: 0 +2026-01-19 12:03:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9841b231-51f3-4b9e-88e6-ad6b1ed67ee6] succeeded in 0.0032364290091209114s: {'triggered': 0} +2026-01-19 12:04:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7705ebd9-2f7b-48e5-bbfa-2b9f7ce1023c] succeeded in 0.008872407983290032s: {'triggered': 0} +2026-01-19 12:05:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4f585eaf-2bf9-4eff-aeb1-597a1382c1cf] succeeded in 0.009312159003457054s: {'triggered': 0} +2026-01-19 12:06:32 INFO celery.app.trace Task connecthub.dispatcher.tick[288bccf4-c2df-4e86-aa7c-d6aff5318270] succeeded in 0.0048558929993305355s: {'triggered': 0} +2026-01-19 12:07:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f5df0d38-cfca-4a78-aaae-af512fdf3727] succeeded in 0.010383788001490757s: {'triggered': 0} +2026-01-19 12:08:31 INFO celery.app.trace Task connecthub.ldap.sync[7b7d8db2-a4ef-4ff3-9c72-eb89c0f61fb4] succeeded in 0.0024989430094137788s: 0 +2026-01-19 12:08:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d154e72e-9e82-4e9d-8b54-df07cbfa2f7d] succeeded in 0.0038080610102042556s: {'triggered': 0} +2026-01-19 12:09:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cf682d9f-7bf6-4fa7-8a10-f3f4924f0a08] succeeded in 0.005125010997289792s: {'triggered': 0} +2026-01-19 12:10:32 INFO celery.app.trace Task connecthub.dispatcher.tick[19f6466f-b3fc-45c4-bdbb-6c9d03b0a26b] succeeded in 0.009454228013055399s: {'triggered': 0} +2026-01-19 12:11:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7a97582d-95aa-4c6b-a486-421dc5e7fa04] succeeded in 0.004113572998903692s: {'triggered': 0} +2026-01-19 12:12:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f147d82b-69d2-49a0-9497-2b1fea09970f] succeeded in 0.004488100006710738s: {'triggered': 0} +2026-01-19 12:13:31 INFO celery.app.trace Task connecthub.ldap.sync[c7f7d5f7-92b3-4831-bdc2-5f881f4b47b1] succeeded in 0.008217462978791445s: 0 +2026-01-19 12:13:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8750cfe2-f70f-492e-bb26-0b5cbae96c2a] succeeded in 0.005072378000477329s: {'triggered': 0} +2026-01-19 12:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[73a4d0b4-a6c3-4ef9-874a-3e9f52dbd849] succeeded in 0.004225543991196901s: {'triggered': 0} +2026-01-19 12:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dc8ced48-2cff-40f0-877a-5ed711ab79c6] succeeded in 0.013774909981293604s: {'triggered': 0} +2026-01-19 12:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[df031fd9-2dca-43bd-9275-606f69a968e0] succeeded in 0.009152398008154705s: {'triggered': 0} +2026-01-19 12:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[67b4dc71-ab74-4ee5-9408-40e5b3f093c0] succeeded in 0.003214803000446409s: {'triggered': 0} +2026-01-19 12:18:31 INFO celery.app.trace Task connecthub.ldap.sync[714431ac-11db-41fb-8020-287e22a51f14] succeeded in 0.013895088981371373s: 0 +2026-01-19 12:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[35b680c7-2dea-459f-a50c-cebf38ab459f] succeeded in 0.00541856000199914s: {'triggered': 0} +2026-01-19 12:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e7360689-6c6b-4353-b03e-835c23c75a54] succeeded in 0.005402312002843246s: {'triggered': 0} +2026-01-19 12:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f63e4e6d-9a82-46fd-8c41-76b19e2f42e6] succeeded in 0.004860351007664576s: {'triggered': 0} +2026-01-19 12:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ce0209ac-ca13-4081-9af8-59a0de9d43a2] succeeded in 0.019573979981942102s: {'triggered': 0} +2026-01-19 12:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bb8c3297-ac5f-4a6a-9ed2-784d91513b9f] succeeded in 0.0030680100026074797s: {'triggered': 0} +2026-01-19 12:23:31 INFO celery.app.trace Task connecthub.ldap.sync[db81bc40-84fb-417a-9979-38bea4b2c996] succeeded in 0.009646488993894309s: 0 +2026-01-19 12:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b8af1dfd-3901-4370-a198-2fc01b7cdb82] succeeded in 0.005557808995945379s: {'triggered': 0} +2026-01-19 12:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1903460c-7f69-40cf-aad1-0703daa05726] succeeded in 0.003662428993266076s: {'triggered': 0} +2026-01-19 12:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b541e0fd-a130-4a61-b9d5-53bd9ef6100c] succeeded in 0.008602444984717295s: {'triggered': 0} +2026-01-19 12:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b394e831-3d66-41dd-83e0-262494e436ad] succeeded in 0.0112484949931968s: {'triggered': 0} +2026-01-19 12:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[fe3d7bfb-76d0-4b40-99fa-9afd2d5c7e64] succeeded in 0.0024333830224350095s: {'triggered': 0} +2026-01-19 12:28:31 INFO celery.app.trace Task connecthub.ldap.sync[382828fa-24c8-4309-bbd4-0909ae55951b] succeeded in 0.004573977988911793s: 0 +2026-01-19 12:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8c0cfc9e-9605-4937-954c-7638c4017478] succeeded in 0.0046140610065776855s: {'triggered': 0} +2026-01-19 12:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6c126554-8d92-406c-9555-c84c4fa1ecbe] succeeded in 0.006990772002609447s: {'triggered': 0} +2026-01-19 12:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a1274442-6a77-40ba-9db9-ff7a9825d407] succeeded in 0.009490583994193003s: {'triggered': 0} +2026-01-19 12:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c61caa3a-1d86-47fc-9f21-02fa768a1c79] succeeded in 0.005679334019077942s: {'triggered': 0} +2026-01-19 12:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5554a8ce-360d-47ca-95a1-dcd316e5bb97] succeeded in 0.007908444997156039s: {'triggered': 0} +2026-01-19 12:33:31 INFO celery.app.trace Task connecthub.ldap.sync[9d598d30-c20c-442a-830a-9a2025161e75] succeeded in 0.0025737450050655752s: 0 +2026-01-19 12:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[31943c53-af57-40d1-a71c-dc1a60cc3467] succeeded in 0.0032770370016805828s: {'triggered': 0} +2026-01-19 12:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[47c12243-be90-4a9a-b2ca-911217dd46b9] succeeded in 0.004848846991080791s: {'triggered': 0} +2026-01-19 12:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[76a3764c-5600-49da-89d5-4c8f6c21f637] succeeded in 0.006417685013730079s: {'triggered': 0} +2026-01-19 12:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[c0352ac3-09ef-4705-9b1f-ade08fd0c64f] succeeded in 0.003970429010223597s: {'triggered': 0} +2026-01-19 12:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[65f6dac5-158c-4ff8-b93e-a4707f305b55] succeeded in 0.008973860996775329s: {'triggered': 0} +2026-01-19 12:38:31 INFO celery.app.trace Task connecthub.ldap.sync[2307d9f8-9c66-4440-943d-a0c56a0bd11c] succeeded in 0.006384601991157979s: 0 +2026-01-19 12:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[64ba004e-3b3b-4d8e-81a5-56091f27719c] succeeded in 0.005480474996147677s: {'triggered': 0} +2026-01-19 12:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[cfe81c1f-823e-48da-b6ef-4cbb6d0d122e] succeeded in 0.006330269010504708s: {'triggered': 0} +2026-01-19 12:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[96c3d2cb-e409-4661-a6f4-4953610c4ad3] succeeded in 0.0073581050091888756s: {'triggered': 0} +2026-01-19 12:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[01db7a00-9748-4c05-9ffa-a00788c48060] succeeded in 0.010857447981834412s: {'triggered': 0} +2026-01-19 12:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f5d85d5f-1f18-44fc-ac28-a01639a9d147] succeeded in 0.006296017993008718s: {'triggered': 0} +2026-01-19 12:43:31 INFO celery.app.trace Task connecthub.ldap.sync[f9abcc94-3749-40fb-9335-ee9795937492] succeeded in 0.003968553995946422s: 0 +2026-01-19 12:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1ef8daae-eb22-40af-a5f2-530461b6d7d9] succeeded in 0.004934722994221374s: {'triggered': 0} +2026-01-19 12:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[f8b3418f-b41e-4048-91c0-fb1a43d35825] succeeded in 0.01767434400971979s: {'triggered': 0} +2026-01-19 12:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ea0754d9-31d3-4e8a-b814-766a43be6279] succeeded in 0.003974345017923042s: {'triggered': 0} +2026-01-19 12:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bd70e097-d3e3-478b-bfce-69a8fa799981] succeeded in 0.008108106994768605s: {'triggered': 0} +2026-01-19 12:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dd1149bd-9c9b-47e3-85bb-7452bd0d7895] succeeded in 0.005501641018781811s: {'triggered': 0} +2026-01-19 12:48:31 INFO celery.app.trace Task connecthub.ldap.sync[975c022e-236f-40e8-8a25-162c9acd7f86] succeeded in 0.008889943012036383s: 0 +2026-01-19 12:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[dcfaee6f-9938-4ceb-9a13-730ac69576c3] succeeded in 0.0032755100110080093s: {'triggered': 0} +2026-01-19 12:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a7d7347e-7e61-4eb4-86dd-f851bf60e2d4] succeeded in 0.006976061995374039s: {'triggered': 0} +2026-01-19 12:50:32 INFO celery.app.trace Task connecthub.dispatcher.tick[92ea2432-9033-40c4-b2d0-f4cfb5b5731f] succeeded in 0.0028982170042581856s: {'triggered': 0} +2026-01-19 12:51:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b3290fbc-7782-46f3-b0d4-23197262b898] succeeded in 0.01458762597758323s: {'triggered': 0} +2026-01-19 12:52:32 INFO celery.app.trace Task connecthub.dispatcher.tick[fa327979-6889-45d8-ae5e-942e1768c0ac] succeeded in 0.006018892978318036s: {'triggered': 0} +2026-01-19 12:53:31 INFO celery.app.trace Task connecthub.ldap.sync[57410c13-656d-433e-85c8-8789e311892c] succeeded in 0.0021987149957567453s: 0 +2026-01-19 12:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ac2f0267-c20c-46d2-9e55-7fb141e62215] succeeded in 0.003413594007724896s: {'triggered': 0} +2026-01-19 12:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d1ac820e-c8a1-4733-997e-4984779e5e85] succeeded in 0.018778929981635883s: {'triggered': 0} +2026-01-19 12:55:32 INFO celery.app.trace Task connecthub.dispatcher.tick[a44194f0-7b5b-4201-8ef0-8ef1af47f179] succeeded in 0.005235890013864264s: {'triggered': 0} +2026-01-19 12:56:32 INFO celery.app.trace Task connecthub.dispatcher.tick[6fe01ba0-f9fc-4036-a9ba-bbb08f4a6630] succeeded in 0.014739834994543344s: {'triggered': 0} +2026-01-19 12:57:32 INFO celery.app.trace Task connecthub.dispatcher.tick[43f2cb29-bca3-4239-98eb-83e6753e11dd] succeeded in 0.0040081779879983515s: {'triggered': 0} +2026-01-19 12:58:31 INFO celery.app.trace Task connecthub.ldap.sync[f4350349-12b7-44a7-ad67-ad1eb489ebe4] succeeded in 0.005557974014664069s: 0 +2026-01-19 12:58:32 INFO celery.app.trace Task connecthub.dispatcher.tick[82b67141-db36-4492-b19c-659030ec527b] succeeded in 0.0024768410075921565s: {'triggered': 0} +2026-01-19 12:59:32 INFO celery.app.trace Task connecthub.dispatcher.tick[38fbce28-46c8-45f6-bbc6-0914ca59faf4] succeeded in 0.015978379000443965s: {'triggered': 0} +2026-01-19 13:00:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e4e7b12e-bbd4-4841-ac33-e2e34092a2bc] succeeded in 0.003913469990948215s: {'triggered': 0} +2026-01-19 13:01:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d92b1eea-1e29-4a5c-b74f-3eda65aff695] succeeded in 0.011389783001504838s: {'triggered': 0} +2026-01-19 13:02:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4d095d40-c51c-4dbd-b977-a2c906243ee1] succeeded in 0.0027074860117863864s: {'triggered': 0} +2026-01-19 13:03:31 INFO celery.app.trace Task connecthub.ldap.sync[25ee1d92-aa04-413d-bd83-3b884f172f47] succeeded in 0.004645056003937498s: 0 +2026-01-19 13:03:32 INFO celery.app.trace Task connecthub.dispatcher.tick[02088b47-1fae-4b7f-83cd-8a7e389509c4] succeeded in 0.001736295991577208s: {'triggered': 0} +2026-01-19 13:04:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9b3315c0-d690-4256-ab64-f571a6426db2] succeeded in 0.004693943017628044s: {'triggered': 0} +2026-01-19 13:05:32 INFO celery.app.trace Task connecthub.dispatcher.tick[48aa1af7-0add-42c3-8f0a-752906ff90a0] succeeded in 0.008342123997863382s: {'triggered': 0} +2026-01-19 13:06:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ba797c62-f674-4148-9a06-269c87f3691b] succeeded in 0.004420190001837909s: {'triggered': 0} +2026-01-19 13:07:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8982feaf-1789-42d4-b104-75e765b37689] succeeded in 0.007282567996298894s: {'triggered': 0} +2026-01-19 13:08:31 INFO celery.app.trace Task connecthub.ldap.sync[d2038a81-553a-4a7b-8f8e-e49a7b980973] succeeded in 0.015124908008147031s: 0 +2026-01-19 13:08:32 INFO celery.app.trace Task connecthub.dispatcher.tick[be4d1fef-239b-43f6-ad30-56e30aa619d6] succeeded in 0.005200815998250619s: {'triggered': 0} +2026-01-19 13:09:32 INFO celery.app.trace Task connecthub.dispatcher.tick[2f93869e-5fc3-439e-b61a-4ccb60710d5a] succeeded in 0.003918987000361085s: {'triggered': 0} +2026-01-19 13:10:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bd83a5ce-bb4b-4a76-9585-2461e7428034] succeeded in 0.009530601993901655s: {'triggered': 0} +2026-01-19 13:11:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b375e21f-80c2-4226-a708-c3fda5b63893] succeeded in 0.0043282580154482275s: {'triggered': 0} +2026-01-19 13:12:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4f04f484-9326-4c44-a565-55ff5960160f] succeeded in 0.004839128989260644s: {'triggered': 0} +2026-01-19 13:13:31 INFO celery.app.trace Task connecthub.ldap.sync[8a1dc558-4059-47da-9556-4d557e420e55] succeeded in 0.009878676006337628s: 0 +2026-01-19 13:13:32 INFO celery.app.trace Task connecthub.dispatcher.tick[1c0f12aa-a27b-4a5a-88a6-e99a4f103807] succeeded in 0.004574588005198166s: {'triggered': 0} +2026-01-19 13:14:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4d6a30b3-3e3f-408f-8c5a-6abe73bdcb4a] succeeded in 0.003703752998262644s: {'triggered': 0} +2026-01-19 13:15:32 INFO celery.app.trace Task connecthub.dispatcher.tick[fbaef4de-b6ff-4e7f-ad87-04665a16d362] succeeded in 0.0030240440100897104s: {'triggered': 0} +2026-01-19 13:16:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4a9b1f06-ba19-45f8-a554-fc3b4fd9f099] succeeded in 0.006708756001899019s: {'triggered': 0} +2026-01-19 13:17:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d34a58e5-f42b-4376-b31a-f3e6ac8dc9e6] succeeded in 0.007226964982692152s: {'triggered': 0} +2026-01-19 13:18:31 INFO celery.app.trace Task connecthub.ldap.sync[545fa7f5-d7fd-46ff-8c37-6b9bea19e2fd] succeeded in 0.006273006001720205s: 0 +2026-01-19 13:18:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4f7d410d-debc-421a-be4a-a57c433b23b5] succeeded in 0.003058920003240928s: {'triggered': 0} +2026-01-19 13:19:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7395d5ee-052f-4eba-9ecc-ca847973668a] succeeded in 0.010808092978550121s: {'triggered': 0} +2026-01-19 13:20:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e0ab7716-fc92-4adf-8780-87a9ef795aae] succeeded in 0.005749256000854075s: {'triggered': 0} +2026-01-19 13:21:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5e97d4d6-7363-4497-889f-ca86143f6760] succeeded in 0.005391047016019002s: {'triggered': 0} +2026-01-19 13:22:32 INFO celery.app.trace Task connecthub.dispatcher.tick[69fa8764-ec90-4a81-8c74-d8b6cccdb123] succeeded in 0.010573342995485291s: {'triggered': 0} +2026-01-19 13:23:31 INFO celery.app.trace Task connecthub.ldap.sync[760d1c92-0747-46fa-a6e0-dabae6d7f5bf] succeeded in 0.005928921978920698s: 0 +2026-01-19 13:23:32 INFO celery.app.trace Task connecthub.dispatcher.tick[58cbdf29-8935-4375-a9c7-e010afd85209] succeeded in 0.006317380000837147s: {'triggered': 0} +2026-01-19 13:24:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8bf010b1-72a5-4c14-a7ca-b2216cdbb5cf] succeeded in 0.004514378990279511s: {'triggered': 0} +2026-01-19 13:25:32 INFO celery.app.trace Task connecthub.dispatcher.tick[0195178c-edc5-4f12-82a9-7ffb80f67b1e] succeeded in 0.013325136998901144s: {'triggered': 0} +2026-01-19 13:26:32 INFO celery.app.trace Task connecthub.dispatcher.tick[e4eb16bd-6bbc-4d49-ae76-18aad324de4a] succeeded in 0.014434097014600411s: {'triggered': 0} +2026-01-19 13:27:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bb1cc696-f699-493c-ab0a-48b5bcd742bf] succeeded in 0.004453711997484788s: {'triggered': 0} +2026-01-19 13:28:31 INFO celery.app.trace Task connecthub.ldap.sync[a6d0f603-fce8-4f90-9aae-407dfc2a7809] succeeded in 0.008807425008853897s: 0 +2026-01-19 13:28:32 INFO celery.app.trace Task connecthub.dispatcher.tick[036db8e4-0614-422d-9be5-a0c3e2e01700] succeeded in 0.0031135449826251715s: {'triggered': 0} +2026-01-19 13:29:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9b58ae2f-8dd9-40db-9393-de575ceddca3] succeeded in 0.00982434197794646s: {'triggered': 0} +2026-01-19 13:30:32 INFO celery.app.trace Task connecthub.dispatcher.tick[9f3e63d7-fff8-41ba-9467-740d37d243e6] succeeded in 0.009151217003818601s: {'triggered': 0} +2026-01-19 13:31:32 INFO celery.app.trace Task connecthub.dispatcher.tick[44587ad1-fd85-4475-bb3e-3f7e4a7edef2] succeeded in 0.01927735100616701s: {'triggered': 0} +2026-01-19 13:32:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b73874d0-c557-44aa-a025-6abe87bd8105] succeeded in 0.003285545011749491s: {'triggered': 0} +2026-01-19 13:33:31 INFO celery.app.trace Task connecthub.ldap.sync[2602d693-00d9-4fb6-8ec7-94fa7897fe0e] succeeded in 0.009421424998436123s: 0 +2026-01-19 13:33:32 INFO celery.app.trace Task connecthub.dispatcher.tick[96aa786b-2c7b-4ebf-a285-e5cbeeded644] succeeded in 0.006340838997857645s: {'triggered': 0} +2026-01-19 13:34:32 INFO celery.app.trace Task connecthub.dispatcher.tick[202ff260-3926-4791-9f16-4fb3ce9a7d73] succeeded in 0.006990346999373287s: {'triggered': 0} +2026-01-19 13:35:32 INFO celery.app.trace Task connecthub.dispatcher.tick[50384092-02b8-475b-b3e8-91c4c58bcc73] succeeded in 0.003796087024966255s: {'triggered': 0} +2026-01-19 13:36:32 INFO celery.app.trace Task connecthub.dispatcher.tick[59def96a-ee0f-42a5-837b-0d451ce2716a] succeeded in 0.010230001003947109s: {'triggered': 0} +2026-01-19 13:37:32 INFO celery.app.trace Task connecthub.dispatcher.tick[903810b6-bd0c-4ca6-a516-9ee5999e1d7a] succeeded in 0.004600521991960704s: {'triggered': 0} +2026-01-19 13:38:31 INFO celery.app.trace Task connecthub.ldap.sync[d9de32b2-ceac-41a2-9883-783b7e7e014b] succeeded in 0.003423153015319258s: 0 +2026-01-19 13:38:32 INFO celery.app.trace Task connecthub.dispatcher.tick[b5fe30bb-7ff4-4f44-839f-60505603850a] succeeded in 0.003898246999597177s: {'triggered': 0} +2026-01-19 13:39:32 INFO celery.app.trace Task connecthub.dispatcher.tick[8267e814-f3f9-48b4-b1ea-6e3b18bc4f40] succeeded in 0.005421278008725494s: {'triggered': 0} +2026-01-19 13:40:32 INFO celery.app.trace Task connecthub.dispatcher.tick[ae20ef40-4339-4948-9061-22a727c3c68a] succeeded in 0.005344712000805885s: {'triggered': 0} +2026-01-19 13:41:32 INFO celery.app.trace Task connecthub.dispatcher.tick[85ead0ab-38ef-4a1b-9da9-1548b232cc28] succeeded in 0.004715413990197703s: {'triggered': 0} +2026-01-19 13:42:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7bcd5f4b-0fa2-4a4d-8fb1-7102585defae] succeeded in 0.003976883017458022s: {'triggered': 0} +2026-01-19 13:43:31 INFO celery.app.trace Task connecthub.ldap.sync[75d9fe28-3128-4425-8342-27a481a50e5d] succeeded in 0.012908317992696539s: 0 +2026-01-19 13:43:32 INFO celery.app.trace Task connecthub.dispatcher.tick[63a8954d-7c0f-43a0-8844-3702a9b501f1] succeeded in 0.005502468993654475s: {'triggered': 0} +2026-01-19 13:44:32 INFO celery.app.trace Task connecthub.dispatcher.tick[5d459967-1c4b-4b76-9960-142263b11c3a] succeeded in 0.0035287580103613436s: {'triggered': 0} +2026-01-19 13:45:32 INFO celery.app.trace Task connecthub.dispatcher.tick[97f5e2d8-13f7-43fe-ae6f-c89cf7c5159b] succeeded in 0.002765339013421908s: {'triggered': 0} +2026-01-19 13:46:32 INFO celery.app.trace Task connecthub.dispatcher.tick[7e456800-e8e2-43eb-a844-4e0cced44f33] succeeded in 0.010972616990329698s: {'triggered': 0} +2026-01-19 13:47:32 INFO celery.app.trace Task connecthub.dispatcher.tick[4a0f7f24-b217-4b75-a456-a929571d0c7b] succeeded in 0.005496808007592335s: {'triggered': 0} +2026-01-19 13:48:31 INFO celery.app.trace Task connecthub.ldap.sync[6c9fb316-e6c6-496e-b3e1-f875aae51837] succeeded in 0.007508605980547145s: 0 +2026-01-19 13:48:32 INFO celery.app.trace Task connecthub.dispatcher.tick[149c529e-2436-4f26-a850-953ece656530] succeeded in 0.003976762993261218s: {'triggered': 0} +2026-01-19 13:49:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d9c24161-7a2c-49aa-ab15-4c120c2533d5] succeeded in 0.01031319799949415s: {'triggered': 0} +2026-01-19 13:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4d9f83cb-cd06-45d2-9bc0-6da01930adb8] succeeded in 0.010092240001540631s: {'triggered': 0} +2026-01-19 13:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[81929ad2-dd67-4890-ac67-46c07a630d2a] succeeded in 0.00627018601517193s: {'triggered': 0} +2026-01-19 13:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[03683146-edc5-4410-8ef8-4c7f563cf46f] succeeded in 0.015074796014232561s: {'triggered': 0} +2026-01-19 13:53:31 INFO celery.app.trace Task connecthub.ldap.sync[15afc653-887e-475e-950e-c2b62bc07744] succeeded in 0.0035565279831644148s: 0 +2026-01-19 13:53:32 INFO celery.app.trace Task connecthub.dispatcher.tick[bf3c6e2d-eb71-436d-bb2f-1e9011a72859] succeeded in 0.004878981999354437s: {'triggered': 0} +2026-01-19 13:54:32 INFO celery.app.trace Task connecthub.dispatcher.tick[d97e6882-3b7f-4ef0-8940-0338c9b8d70c] succeeded in 0.0034603020176291466s: {'triggered': 0} +2026-01-19 13:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[63a3f8a6-5c29-4f90-b5ff-0c084cbe178d] succeeded in 0.006124533974798396s: {'triggered': 0} +2026-01-19 13:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6f3bcdc6-2a26-4661-9a33-ce4eac47739b] succeeded in 0.010732777998782694s: {'triggered': 0} +2026-01-19 13:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e89a0294-f9d1-4174-a3e8-27c1db0a73ba] succeeded in 0.006313005986157805s: {'triggered': 0} +2026-01-19 13:58:31 INFO celery.app.trace Task connecthub.ldap.sync[d7b802b1-292c-4c77-b766-56af54c86917] succeeded in 0.018028806982329115s: 0 +2026-01-19 13:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a7e9afd0-8c2c-4109-b687-78f9c479f8b3] succeeded in 0.006740379991242662s: {'triggered': 0} +2026-01-19 13:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2a8c2693-c320-4d7d-b1b9-41ddc79e7542] succeeded in 0.0052135120204184204s: {'triggered': 0} +2026-01-19 14:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a1ce20dc-5d77-4d7e-9c53-8ec0fcd3f7aa] succeeded in 0.01792733298498206s: {'triggered': 0} +2026-01-19 14:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[490b39d0-050c-402f-9a62-0caa4c9ca5df] succeeded in 0.005256681994069368s: {'triggered': 0} +2026-01-19 14:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0d9281fc-9b6a-4f29-a96a-25e0cdd090aa] succeeded in 0.008693151001352817s: {'triggered': 0} +2026-01-19 14:03:31 INFO celery.app.trace Task connecthub.ldap.sync[8d5dda96-189f-41eb-8225-d7b0cdc09af6] succeeded in 0.00615426799049601s: 0 +2026-01-19 14:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9a571e25-c78d-488f-a68a-01259c048e13] succeeded in 0.003503218002151698s: {'triggered': 0} +2026-01-19 14:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[703ac9cb-d034-450e-a516-b5d2d39a5d37] succeeded in 0.005319641000824049s: {'triggered': 0} +2026-01-19 14:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9dc27406-1c05-49e7-a7b5-97dafdbce868] succeeded in 0.010897156986175105s: {'triggered': 0} +2026-01-19 14:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ae07319b-8ed0-4d0a-bcb1-a50f479df743] succeeded in 0.00676906100125052s: {'triggered': 0} +2026-01-19 14:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ea223592-d91e-4f3a-bfa6-e0972609eb3a] succeeded in 0.00989531900268048s: {'triggered': 0} +2026-01-19 14:08:31 INFO celery.app.trace Task connecthub.ldap.sync[6a236e4f-51e9-4f09-b2b8-5351f8be9bbc] succeeded in 0.010605196002870798s: 0 +2026-01-19 14:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[48a61c08-6f9a-4080-9a5f-be279920716c] succeeded in 0.00467730502714403s: {'triggered': 0} +2026-01-19 14:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6fac005e-3f38-4bf7-b4b9-656db0d94f07] succeeded in 0.0064926430059131235s: {'triggered': 0} +2026-01-19 14:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d8bbb73e-2633-4a6a-935e-b05b7d427104] succeeded in 0.009165775001747534s: {'triggered': 0} +2026-01-19 14:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e48d5851-5b37-446e-9108-9ed2cbf2dccc] succeeded in 0.01076194699271582s: {'triggered': 0} +2026-01-19 14:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e84f67cb-03bf-4011-a120-b4410ec3ed51] succeeded in 0.004564600996673107s: {'triggered': 0} +2026-01-19 14:13:31 INFO celery.app.trace Task connecthub.ldap.sync[265baf68-5cf9-4bf6-9c62-ad8df4e14562] succeeded in 0.007451711018802598s: 0 +2026-01-19 14:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[afac4aff-ad8b-4909-90d2-4f47ec10cbeb] succeeded in 0.004384435975225642s: {'triggered': 0} +2026-01-19 14:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ddcf5771-9b7f-4736-917b-6f327ea19d38] succeeded in 0.005578979005804285s: {'triggered': 0} +2026-01-19 14:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[650f13f3-9f0f-43c9-892f-02ec9e7adf4f] succeeded in 0.0050386060029268265s: {'triggered': 0} +2026-01-19 14:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[60c17f73-c08b-41b2-a32c-9a3766e90ffc] succeeded in 0.011829864990431815s: {'triggered': 0} +2026-01-19 14:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[97d38abf-55ac-4df3-9492-73cd275672b6] succeeded in 0.0032744549971539527s: {'triggered': 0} +2026-01-19 14:18:31 INFO celery.app.trace Task connecthub.ldap.sync[f07373f2-05ed-40e1-85f3-95ffac416ab6] succeeded in 0.011432740982854739s: 0 +2026-01-19 14:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f4af14bb-03df-4ce1-a8a1-ed0026e8314d] succeeded in 0.0032357139862142503s: {'triggered': 0} +2026-01-19 14:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b295d1a1-3011-4d31-a537-bf9830ab35f2] succeeded in 0.017535616003442556s: {'triggered': 0} +2026-01-19 14:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[47cefc8a-2d08-40b0-9d5c-1971c7df2115] succeeded in 0.004777551017468795s: {'triggered': 0} +2026-01-19 14:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1fad6f66-9a0e-4fbf-9348-892b9fc5e50b] succeeded in 0.009499149018665776s: {'triggered': 0} +2026-01-19 14:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4223e758-cb60-4797-a735-bc21ca51ea63] succeeded in 0.00852806301554665s: {'triggered': 0} +2026-01-19 14:23:31 INFO celery.app.trace Task connecthub.ldap.sync[853240b9-527b-45fa-bbfa-60989ffcdb00] succeeded in 0.007906326005468145s: 0 +2026-01-19 14:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a1df0db7-4d80-42f2-a194-dea34a5a0fd1] succeeded in 0.0013274220109451562s: {'triggered': 0} +2026-01-19 14:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2afd6ed1-0d40-4d50-9c41-b7931acbc4f4] succeeded in 0.007225477980682626s: {'triggered': 0} +2026-01-19 14:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b89536f0-04f7-4e44-a4db-d51498619a0a] succeeded in 0.006511098996270448s: {'triggered': 0} +2026-01-19 14:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[83c4076e-d147-4a5c-a3f7-9672969f40e1] succeeded in 0.002455839014146477s: {'triggered': 0} +2026-01-19 14:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dfb96c84-ad0c-48d6-ba6f-beef569fab05] succeeded in 0.009059562988113612s: {'triggered': 0} +2026-01-19 14:28:31 INFO celery.app.trace Task connecthub.ldap.sync[bd7cc59b-ead9-4e51-9852-19627da51f1a] succeeded in 0.0043549690162763s: 0 +2026-01-19 14:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[92a13374-8b09-460d-8aed-86cea624bd05] succeeded in 0.0029986739973537624s: {'triggered': 0} +2026-01-19 14:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3d4bf6c8-c913-4a86-bb00-ee732943a051] succeeded in 0.0043940529867541045s: {'triggered': 0} +2026-01-19 14:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1a4cd9a1-756c-4452-bd91-7359bcd42a85] succeeded in 0.012081321008736268s: {'triggered': 0} +2026-01-19 14:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0a1212cc-06b6-4cd2-baa6-eb69f51a8d15] succeeded in 0.010020442015957087s: {'triggered': 0} +2026-01-19 14:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9dd0c768-73eb-4514-807e-c95263b0e30e] succeeded in 0.0032522580004297197s: {'triggered': 0} +2026-01-19 14:33:31 INFO celery.app.trace Task connecthub.ldap.sync[563d5037-2093-4a99-90e0-dcc59d7221b7] succeeded in 0.01213098899461329s: 0 +2026-01-19 14:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4aea153e-2923-4d5d-9273-d8237db11db3] succeeded in 0.004817719978746027s: {'triggered': 0} +2026-01-19 14:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ebcec0f0-3538-457c-a14d-6b145c335bd0] succeeded in 0.007224308996228501s: {'triggered': 0} +2026-01-19 14:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[22b86d06-4989-4b87-9d3b-c7a3885005db] succeeded in 0.00583847300731577s: {'triggered': 0} +2026-01-19 14:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9fd9d669-b548-4de4-a59f-09e5d0a27777] succeeded in 0.02512160298647359s: {'triggered': 0} +2026-01-19 14:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6e85e211-ad31-446e-9451-25053c0f725a] succeeded in 0.005148096010088921s: {'triggered': 0} +2026-01-19 14:38:31 INFO celery.app.trace Task connecthub.ldap.sync[0e45ad55-a612-4594-8e3d-201c03024eca] succeeded in 0.005967931007035077s: 0 +2026-01-19 14:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[271edb61-14bb-4278-be71-f5f92e435031] succeeded in 0.005586139013757929s: {'triggered': 0} +2026-01-19 14:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c3e5f8bf-5d9e-4adf-8cee-e8e4a9e797d9] succeeded in 0.0037221340171527117s: {'triggered': 0} +2026-01-19 14:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[480bca4e-68cf-446f-b0b8-4072bcef4f8e] succeeded in 0.011912694986676797s: {'triggered': 0} +2026-01-19 14:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5a63d9ae-488b-4b1c-bb0f-90899ee791f0] succeeded in 0.003494883014354855s: {'triggered': 0} +2026-01-19 14:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[819ab100-43a4-49c2-8a67-9b66642f8024] succeeded in 0.001401170011376962s: {'triggered': 0} +2026-01-19 14:43:31 INFO celery.app.trace Task connecthub.ldap.sync[933fc96f-83c5-44ba-b5ed-9cbd3390200f] succeeded in 0.008490020991303027s: 0 +2026-01-19 14:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dfc0a682-a99e-4d38-b71d-7edda47baf9e] succeeded in 0.003133132995571941s: {'triggered': 0} +2026-01-19 14:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6ffaacf1-fa54-4874-9807-1d54c12b9fa8] succeeded in 0.005656471999827772s: {'triggered': 0} +2026-01-19 14:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9b1fc3e8-575d-4c2a-b780-9687c5bf236e] succeeded in 0.004947595007251948s: {'triggered': 0} +2026-01-19 14:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1dbf9db5-94f8-4a21-8c60-ca17d580f8b2] succeeded in 0.014009584003360942s: {'triggered': 0} +2026-01-19 14:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[115bd535-a03b-42d3-9341-ee2e10b06b0f] succeeded in 0.005488499999046326s: {'triggered': 0} +2026-01-19 14:48:31 INFO celery.app.trace Task connecthub.ldap.sync[86ee3c7a-9cf6-4176-a7ec-d3bb559dbb13] succeeded in 0.005017112998757511s: 0 +2026-01-19 14:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7d19f760-55a0-424f-8c69-762e83fedc5c] succeeded in 0.004715370014309883s: {'triggered': 0} +2026-01-19 14:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[908e5dde-125a-4ad6-9b96-e24b11f04562] succeeded in 0.006761897006072104s: {'triggered': 0} +2026-01-19 14:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1bb07989-8af8-4f12-8f90-d6f646eef0f4] succeeded in 0.015160843991907313s: {'triggered': 0} +2026-01-19 14:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[988af296-cedc-4ec4-8a25-a3f1a3d39c77] succeeded in 0.0033681970089673996s: {'triggered': 0} +2026-01-19 14:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[833a68b7-12a1-450e-8170-8de75aa9c6d8] succeeded in 0.005833431001519784s: {'triggered': 0} +2026-01-19 14:53:31 INFO celery.app.trace Task connecthub.ldap.sync[fd20de2e-20ee-4917-bf49-b66696cb1194] succeeded in 0.006328541989205405s: 0 +2026-01-19 14:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7e1d90e4-aeb9-4f4d-bf22-c0608830ee29] succeeded in 0.004830135992961004s: {'triggered': 0} +2026-01-19 14:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[af62f590-54dd-4441-b5fa-1aaeac38b051] succeeded in 0.0046553869906347245s: {'triggered': 0} +2026-01-19 14:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c396dc0e-8eaf-455a-aa20-567ae172ab35] succeeded in 0.006243873998755589s: {'triggered': 0} +2026-01-19 14:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[285832d0-2bde-43a8-b5ae-869e4785d542] succeeded in 0.012586412980454043s: {'triggered': 0} +2026-01-19 14:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0a9b65d1-8431-4b4b-a9dd-0e6affb96702] succeeded in 0.00555313698714599s: {'triggered': 0} +2026-01-19 14:58:31 INFO celery.app.trace Task connecthub.ldap.sync[6d27651e-3ed7-4a2c-91de-37b4235b3f5e] succeeded in 0.0037447999930009246s: 0 +2026-01-19 14:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f91b88b4-d235-45bd-bd3a-5853014d8105] succeeded in 0.002903880988014862s: {'triggered': 0} +2026-01-19 14:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2c5904a8-4d5b-4395-ab6d-082d16ff5b5b] succeeded in 0.01112588998512365s: {'triggered': 0} +2026-01-19 15:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a9b48848-a5f6-4d56-b4f6-bc1b23506892] succeeded in 0.009151887003099546s: {'triggered': 0} +2026-01-19 15:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d9caed90-5b94-4d7c-91e1-23d2b6e20457] succeeded in 0.003930631006369367s: {'triggered': 0} +2026-01-19 15:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[794936b3-d9d1-4d0c-b3bd-bf49dffaa3fe] succeeded in 0.0074095930031035095s: {'triggered': 0} +2026-01-19 15:03:31 INFO celery.app.trace Task connecthub.ldap.sync[dac62681-4f97-4c9f-ad4f-d0b7c5eae638] succeeded in 0.00859038598719053s: 0 +2026-01-19 15:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b90cb0f4-6ae7-4699-9fc3-434e622e4c5d] succeeded in 0.0036599209997802973s: {'triggered': 0} +2026-01-19 15:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[56868352-524c-41ef-8650-f2eb33858dc1] succeeded in 0.005795673991087824s: {'triggered': 0} +2026-01-19 15:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ea237f06-bca8-4e7b-ac4a-c8e13303d20f] succeeded in 0.01172122301068157s: {'triggered': 0} +2026-01-19 15:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[75ea8fca-29a4-4785-95a6-c4226441ccd8] succeeded in 0.0035083800030406564s: {'triggered': 0} +2026-01-19 15:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fb4abb31-527b-4ea9-a254-65eba7b94300] succeeded in 0.007271593000041321s: {'triggered': 0} +2026-01-19 15:08:31 INFO celery.app.trace Task connecthub.ldap.sync[edd466e8-ada2-446f-ad27-350458ef73d0] succeeded in 0.00393125499249436s: 0 +2026-01-19 15:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e816da35-3e49-4047-8b37-85f9bd7e5d98] succeeded in 0.004627297981642187s: {'triggered': 0} +2026-01-19 15:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f33a1fac-402f-4e07-ac47-93ff8765f807] succeeded in 0.007218301005195826s: {'triggered': 0} +2026-01-19 15:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[80b08230-9ddc-4371-bd82-1899a668c239] succeeded in 0.00867580299382098s: {'triggered': 0} +2026-01-19 15:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[869d2eec-b8e1-4301-8d75-9c3cd775aae1] succeeded in 0.007795968005666509s: {'triggered': 0} +2026-01-19 15:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f46f4d0c-ef23-4d33-87c0-1a7fac26c8b3] succeeded in 0.003981296991696581s: {'triggered': 0} +2026-01-19 15:13:31 INFO celery.app.trace Task connecthub.ldap.sync[79c38bb6-cbaf-4cf9-9949-8ce6721bf557] succeeded in 0.010160555015318096s: 0 +2026-01-19 15:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d6669811-88cb-4939-84eb-ed962ac51e07] succeeded in 0.0026661709998734295s: {'triggered': 0} +2026-01-19 15:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[049b3a09-1eb6-470e-8511-aa811821f842] succeeded in 0.0034460460010450333s: {'triggered': 0} +2026-01-19 15:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1b7c8fc7-72b0-40ef-8f32-8732e8406c07] succeeded in 0.011506515002110973s: {'triggered': 0} +2026-01-19 15:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4a65eeac-ffc1-45dd-a273-3e10ff37c3c0] succeeded in 0.005949215992586687s: {'triggered': 0} +2026-01-19 15:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e3f5d3f4-b5e4-41d8-b6c6-5af04de15179] succeeded in 0.004489048005780205s: {'triggered': 0} +2026-01-19 15:18:31 INFO celery.app.trace Task connecthub.ldap.sync[38a4a1d5-56fe-4f80-983a-1aeff7b7fc56] succeeded in 0.006111132999649271s: 0 +2026-01-19 15:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e9342319-9f1a-4e05-9036-2a33ff863dd6] succeeded in 0.0037880470044910908s: {'triggered': 0} +2026-01-19 15:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[83a78a87-5bb2-4710-ba90-286fb2c8dcb4] succeeded in 0.007910511019872501s: {'triggered': 0} +2026-01-19 15:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a4cc441c-2aca-4cbd-808d-fc4d6b7c59b9] succeeded in 0.0057047579903155565s: {'triggered': 0} +2026-01-19 15:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b725b431-2590-4f82-ba45-5ae456f80a67] succeeded in 0.013425351993646473s: {'triggered': 0} +2026-01-19 15:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dae0cddb-af00-4e55-bd3f-5b4b6ceda494] succeeded in 0.006891508994158357s: {'triggered': 0} +2026-01-19 15:23:31 INFO celery.app.trace Task connecthub.ldap.sync[0a245722-5ae4-4ed7-b022-1072caeefa53] succeeded in 0.0076816779910586774s: 0 +2026-01-19 15:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ca661566-aeb3-4893-810c-12c03e60e774] succeeded in 0.004221672017592937s: {'triggered': 0} +2026-01-19 15:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[77dcbe12-c810-4568-b071-85d85d627bba] succeeded in 0.004646672983653843s: {'triggered': 0} +2026-01-19 15:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8ce6e327-c942-4ba4-b583-3e7578f62277] succeeded in 0.011864016007166356s: {'triggered': 0} +2026-01-19 15:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c686bdb9-7e9d-498a-a114-24f8d0a73951] succeeded in 0.006310800003120676s: {'triggered': 0} +2026-01-19 15:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b3b8290a-a19a-466e-974d-63256c1c499a] succeeded in 0.006375383993145078s: {'triggered': 0} +2026-01-19 15:28:31 INFO celery.app.trace Task connecthub.ldap.sync[e5164c8e-e03d-4f38-bc90-f07f7a68531b] succeeded in 0.009830096998484805s: 0 +2026-01-19 15:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0cc81788-a92f-4b8f-8982-39524c5b4487] succeeded in 0.006059633014956489s: {'triggered': 0} +2026-01-19 15:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7df04074-171a-454a-9b96-302a1b8e48cb] succeeded in 0.006208424980286509s: {'triggered': 0} +2026-01-19 15:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f83550e1-821b-4e74-b953-51c79675cbb8] succeeded in 0.010047471994766966s: {'triggered': 0} +2026-01-19 15:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[974cd6c3-78e9-4c79-83b8-28f353ec0914] succeeded in 0.009754138009157032s: {'triggered': 0} +2026-01-19 15:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b8d9bcd0-303b-4b7d-9a5b-bd265c2fbaf9] succeeded in 0.006070841016480699s: {'triggered': 0} +2026-01-19 15:33:31 INFO celery.app.trace Task connecthub.ldap.sync[7e8c9495-1955-402f-bf71-6fdd26deca06] succeeded in 0.004673798015573993s: 0 +2026-01-19 15:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[86767c2e-5cd5-4890-9864-65f437f8b4d7] succeeded in 0.0054510069894604385s: {'triggered': 0} +2026-01-19 15:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d1186534-6a20-4590-bb60-af423a2f9059] succeeded in 0.008127260982291773s: {'triggered': 0} +2026-01-19 15:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8a8ddc3b-8b81-4ab3-ad16-448ede1dbd5b] succeeded in 0.005027840001275763s: {'triggered': 0} +2026-01-19 15:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[351781e5-b253-478d-8d2a-7f83ff6ba7fd] succeeded in 0.010872265003854409s: {'triggered': 0} +2026-01-19 15:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[29e23bd5-e528-456b-97c1-4886792d057b] succeeded in 0.00578854899504222s: {'triggered': 0} +2026-01-19 15:38:31 INFO celery.app.trace Task connecthub.ldap.sync[07d0dddf-af55-45a8-a4fa-c9a4d5847451] succeeded in 0.005675883003277704s: 0 +2026-01-19 15:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2b03c9ba-867e-40ec-9a7b-62d6f8feb8c8] succeeded in 0.00497017300222069s: {'triggered': 0} +2026-01-19 15:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3c011a15-7372-4338-b9a7-994f063c5ae4] succeeded in 0.0051567569898907095s: {'triggered': 0} +2026-01-19 15:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[628f0477-b437-4afe-8e3e-ba9f79ceb60d] succeeded in 0.0098046800121665s: {'triggered': 0} +2026-01-19 15:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[47a91fd2-190c-4cbc-8b9e-de7b27078a8e] succeeded in 0.008392302988795564s: {'triggered': 0} +2026-01-19 15:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[87b9e269-d983-4e9b-a864-67ca700c4aab] succeeded in 0.0036479630216490477s: {'triggered': 0} +2026-01-19 15:43:31 INFO celery.app.trace Task connecthub.ldap.sync[46d72772-856a-4780-95ef-93b94666ead1] succeeded in 0.014586478006094694s: 0 +2026-01-19 15:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c493c3f6-1d36-4beb-a72c-304b301adb76] succeeded in 0.004387130989925936s: {'triggered': 0} +2026-01-19 15:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2d9c2824-e169-40ed-8204-d22c0eee397b] succeeded in 0.006205132987815887s: {'triggered': 0} +2026-01-19 15:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e226c263-61b6-43c1-a74d-5479de575753] succeeded in 0.004813589999685064s: {'triggered': 0} +2026-01-19 15:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1eda2f10-85ef-41c1-930f-c2f0c5f93ba0] succeeded in 0.007782094005960971s: {'triggered': 0} +2026-01-19 15:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[816ed5ce-a7aa-4836-b0ef-a859c337fe94] succeeded in 0.004940257000271231s: {'triggered': 0} +2026-01-19 15:48:31 INFO celery.app.trace Task connecthub.ldap.sync[0b16957f-9601-4662-b70e-2a39e37ac04d] succeeded in 0.007053175999317318s: 0 +2026-01-19 15:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[09f84325-5f80-421a-b1cb-34a8ca4dc4e2] succeeded in 0.00430808900273405s: {'triggered': 0} +2026-01-19 15:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d1c3ac75-1f33-4d65-b64e-a9efb684adef] succeeded in 0.010467264015460387s: {'triggered': 0} +2026-01-19 15:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5d03face-7e04-4c3d-a019-08dc87688f59] succeeded in 0.0033087960036937147s: {'triggered': 0} +2026-01-19 15:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b4fefc28-7e41-42db-bb54-de34c470c515] succeeded in 0.003690421988721937s: {'triggered': 0} +2026-01-19 15:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[72b70a2a-44a0-4d79-9fb7-ee3cb20b6328] succeeded in 0.010903116984991357s: {'triggered': 0} +2026-01-19 15:53:31 INFO celery.app.trace Task connecthub.ldap.sync[d23de3be-8b71-45f3-ab4f-f96aa6623b61] succeeded in 0.004753457003971562s: 0 +2026-01-19 15:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0c0c380f-650f-4a22-ab84-dcf9b66a117a] succeeded in 0.0036711789725814015s: {'triggered': 0} +2026-01-19 15:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[aeff4887-0afa-4dfe-8c35-e6f0aca654d9] succeeded in 0.003793713985942304s: {'triggered': 0} +2026-01-19 15:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[14c57668-0f55-436b-8169-f52f244e2f6f] succeeded in 0.007182906003436074s: {'triggered': 0} +2026-01-19 15:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f0f1245a-3805-4945-97bf-48c53e901bd6] succeeded in 0.022117154992884025s: {'triggered': 0} +2026-01-19 15:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9a14a218-a8ef-499d-a7a2-937194d76020] succeeded in 0.007245768996654078s: {'triggered': 0} +2026-01-19 15:58:31 INFO celery.app.trace Task connecthub.ldap.sync[846956d8-1f02-447f-90a6-1ecae61b3f28] succeeded in 0.010998384008416906s: 0 +2026-01-19 15:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b82958cc-c82c-40e1-9194-b2c4c481d82f] succeeded in 0.0031981100037228316s: {'triggered': 0} +2026-01-19 15:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fcdcc2b5-1d9b-4b9e-9743-e91569081ce5] succeeded in 0.008733660011785105s: {'triggered': 0} +2026-01-19 16:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a90b7c44-0767-4040-a32a-c8f7b58db87c] succeeded in 0.008697659999597818s: {'triggered': 0} +2026-01-19 16:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c5efca17-33a4-4303-acd2-9e28dbe0a15f] succeeded in 0.20652514297398739s: {'triggered': 1} +2026-01-19 16:01:33 ERROR connecthub.tasks.execute execute_job failed job_id=demo.test +Traceback (most recent call last): + File "/app/app/tasks/execute.py", line 172, in execute_job + job_instance = instantiate(handler_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/app/app/plugins/manager.py", line 43, in instantiate + cls = load_job_class(handler_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/app/app/plugins/manager.py", line 33, in load_job_class + mod = importlib.import_module(ref.module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1204, in _gcd_import + File "", line 1176, in _find_and_load + File "", line 1126, in _find_and_load_unlocked + File "", line 241, in _call_with_frames_removed + File "", line 1204, in _gcd_import + File "", line 1176, in _find_and_load + File "", line 1140, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'extensions.example' +2026-01-19 16:01:33 INFO celery.app.trace Task connecthub.execute_job[81a3825a-a895-4277-8e9b-2ddc0c649def] succeeded in 0.28908682501059957s: {'status': 'FAILURE', 'job_id': 'demo.test', 'result': {}, 'message': 'ModuleNotFoundError("No module named \'extensions.example\'")'} +2026-01-19 16:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c5117505-2554-4d82-963a-a3bc4a0aed0c] succeeded in 0.011156435997691005s: {'triggered': 0} +2026-01-19 16:03:31 INFO celery.app.trace Task connecthub.ldap.sync[3fe58152-0607-497f-8dd8-fc492b28fdd2] succeeded in 0.006315387989161536s: 0 +2026-01-19 16:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[866d7e21-4b2a-4610-bb82-20eb9523ed8c] succeeded in 0.0037053409905638546s: {'triggered': 0} +2026-01-19 16:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8334e1e6-5ecb-49f2-8f8b-161cce872054] succeeded in 0.008523142023477703s: {'triggered': 0} +2026-01-19 16:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b4b2c503-dae8-46c6-ae33-281608b06970] succeeded in 0.0059139289951417595s: {'triggered': 0} +2026-01-19 16:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4972eaa4-c319-448c-bfa2-075d31d4744a] succeeded in 0.008634475991129875s: {'triggered': 0} +2026-01-19 16:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[672c6c49-83ad-4a16-bab7-decfe09af73b] succeeded in 0.007272023998666555s: {'triggered': 0} +2026-01-19 16:08:31 INFO celery.app.trace Task connecthub.ldap.sync[85c0b6e9-e811-4bf5-8817-df96a1105f53] succeeded in 0.007304982980713248s: 0 +2026-01-19 16:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ad60daec-c7c0-44be-8879-5b61ea10440c] succeeded in 0.0035690520016942173s: {'triggered': 0} +2026-01-19 16:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[596f487c-7424-4347-aa07-20c947e7bc73] succeeded in 0.004208090016618371s: {'triggered': 0} +2026-01-19 16:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6dc38de4-22c8-47b0-930d-1b078f8ac54a] succeeded in 0.018460838997270912s: {'triggered': 0} +2026-01-19 16:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8e73f164-af78-485f-8656-d1cf20a2bb9c] succeeded in 0.007456836989149451s: {'triggered': 0} +2026-01-19 16:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[cd75003c-484e-4104-bdab-579af6b64bc3] succeeded in 0.006459023017669097s: {'triggered': 0} +2026-01-19 16:13:31 INFO celery.app.trace Task connecthub.ldap.sync[9325b448-5709-43c5-ae07-f9972d91680b] succeeded in 0.016096240986371413s: 0 +2026-01-19 16:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6fac7a45-30a6-4395-a8c7-c1506b1f9357] succeeded in 0.004723008984001353s: {'triggered': 0} +2026-01-19 16:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[890b0adb-27b9-439b-8d0c-e99b6f340a0c] succeeded in 0.0108808719960507s: {'triggered': 0} +2026-01-19 16:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6b533376-c434-4fc8-b586-c1434d82fac6] succeeded in 0.003461178013822064s: {'triggered': 0} +2026-01-19 16:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c4fb7ead-83f7-4503-9a8b-4d4a2b14bc59] succeeded in 0.012434611999196932s: {'triggered': 0} +2026-01-19 16:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d8ffe9b8-cb06-4bfc-a078-9e1d6f3dd853] succeeded in 0.0034106330131180584s: {'triggered': 0} +2026-01-19 16:18:31 INFO celery.app.trace Task connecthub.ldap.sync[c4120396-8798-41b1-b094-d9e01e3ba06d] succeeded in 0.009831728995777667s: 0 +2026-01-19 16:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3ffef72e-3101-485d-b8ad-1750cfc597b0] succeeded in 0.006149303982965648s: {'triggered': 0} +2026-01-19 16:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[57f5c922-f8a8-4af7-97b0-d8392504715a] succeeded in 0.006288012984441593s: {'triggered': 0} +2026-01-19 16:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e1d4abeb-c1f8-4a8a-99c5-7aae1055120e] succeeded in 0.009966818994143978s: {'triggered': 0} +2026-01-19 16:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3dd9d44c-8e80-4c7d-8a97-45c3fba571ac] succeeded in 0.005168639007024467s: {'triggered': 0} +2026-01-19 16:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6e0803b4-2120-4300-b8b0-44af229d6484] succeeded in 0.008629482006654143s: {'triggered': 0} +2026-01-19 16:23:31 INFO celery.app.trace Task connecthub.ldap.sync[7c1533ad-fc3d-4948-97f8-c3debf3d198b] succeeded in 0.012528200983069837s: 0 +2026-01-19 16:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e13b9adb-5953-498d-86e7-73014d7e65bc] succeeded in 0.0035388429823797196s: {'triggered': 0} +2026-01-19 16:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b96ff0ab-f7db-49ed-b408-8a2026ca84ae] succeeded in 0.00803273101337254s: {'triggered': 0} +2026-01-19 16:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fdb7e209-ab2b-49e7-bcb7-a7531a703d85] succeeded in 0.006492267973953858s: {'triggered': 0} +2026-01-19 16:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[bac3f280-ff12-4ee5-8005-3b1a54d71f58] succeeded in 0.005273265007417649s: {'triggered': 0} +2026-01-19 16:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8ac46b71-cad7-46ba-a6b3-f2195204a574] succeeded in 0.01838006600155495s: {'triggered': 0} +2026-01-19 16:28:31 INFO celery.app.trace Task connecthub.ldap.sync[78797a04-225c-4739-bd55-d60f48cfbcc9] succeeded in 0.004794472013600171s: 0 +2026-01-19 16:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7380ffb6-3d07-4031-9c7f-17799cd7ba3e] succeeded in 0.0046278879744932055s: {'triggered': 0} +2026-01-19 16:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7db106f0-901a-4807-8f5a-a6f13dfd7e73] succeeded in 0.006692827999358997s: {'triggered': 0} +2026-01-19 16:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[663342ae-fe79-4419-a3d0-32228c1802ba] succeeded in 0.008585075993323699s: {'triggered': 0} +2026-01-19 16:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a17c39c2-e785-4707-a4e6-ff2735afcc6d] succeeded in 0.005964588024653494s: {'triggered': 0} +2026-01-19 16:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[26dee679-f21a-4ce8-9925-6fd87cc3ee9b] succeeded in 0.010521343006985262s: {'triggered': 0} +2026-01-19 16:33:31 INFO celery.app.trace Task connecthub.ldap.sync[6f3c4df6-040b-4cff-a65e-aef790134838] succeeded in 0.006622931017773226s: 0 +2026-01-19 16:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[51ad2dc3-cf41-4f75-9c30-626cf4d0991d] succeeded in 0.002688214008230716s: {'triggered': 0} +2026-01-19 16:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5441c599-022b-41d4-bcdf-44297bac18f5] succeeded in 0.005019968986744061s: {'triggered': 0} +2026-01-19 16:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3d62515b-8c1e-4ba4-ac5d-5f01c9e633f6] succeeded in 0.006639434985117987s: {'triggered': 0} +2026-01-19 16:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c78569d3-2e0f-48ef-887b-d5c700ec0c3c] succeeded in 0.01666941901203245s: {'triggered': 0} +2026-01-19 16:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6cf053f9-1401-4a54-b631-8ce770db1fe6] succeeded in 0.006277432985370979s: {'triggered': 0} +2026-01-19 16:38:31 INFO celery.app.trace Task connecthub.ldap.sync[c1d66270-0661-4fb3-a639-7836445b3839] succeeded in 0.0059045150119345635s: 0 +2026-01-19 16:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fe7a5d42-f7ed-408f-b8f5-a13172f00131] succeeded in 0.0037220090162009s: {'triggered': 0} +2026-01-19 16:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[04a4e1a5-e7cf-46b0-b39f-8883edaa8174] succeeded in 0.004048759990837425s: {'triggered': 0} +2026-01-19 16:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[258f8048-9169-49b8-b24a-77a3987d62db] succeeded in 0.005692263977834955s: {'triggered': 0} +2026-01-19 16:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1a469f26-b828-4782-a4bf-26334c1ef856] succeeded in 0.011339196003973484s: {'triggered': 0} +2026-01-19 16:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7c0ee86d-c60d-4d13-b68d-a6337fce59f8] succeeded in 0.005136095976922661s: {'triggered': 0} +2026-01-19 16:43:31 INFO celery.app.trace Task connecthub.ldap.sync[e009bb59-ef8e-4198-b423-feed624c2aeb] succeeded in 0.004929512011585757s: 0 +2026-01-19 16:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[88d2932f-072e-440c-a806-f8d90e33a1ef] succeeded in 0.004481802985537797s: {'triggered': 0} +2026-01-19 16:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[55897335-7649-4c91-9d81-b337ab267cfa] succeeded in 0.004279385990230367s: {'triggered': 0} +2026-01-19 16:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[24282eac-a8d0-4b0b-ad48-04cc3c7232c9] succeeded in 0.007331519009312615s: {'triggered': 0} +2026-01-19 16:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[031ca306-f997-4d4e-aa11-75b802242a69] succeeded in 0.008157978998497128s: {'triggered': 0} +2026-01-19 16:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5d9a850c-98dc-4d65-a97d-bce629d7b4ab] succeeded in 0.004596220009261742s: {'triggered': 0} +2026-01-19 16:48:31 INFO celery.app.trace Task connecthub.ldap.sync[6a200969-08c3-453c-a4a8-72014d20553b] succeeded in 0.008216187008656561s: 0 +2026-01-19 16:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8d4e3ecc-d207-49ec-8059-deba27493437] succeeded in 0.004595178994350135s: {'triggered': 0} +2026-01-19 16:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[425baba8-a450-4519-81a1-561f0cfea24b] succeeded in 0.016468500019982457s: {'triggered': 0} +2026-01-19 16:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[19c22f7a-1fce-46b0-84f2-c6a08452deca] succeeded in 0.0048088869953062385s: {'triggered': 0} +2026-01-19 16:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[aa484f83-3082-439d-9de8-dd15af960d52] succeeded in 0.00434151099761948s: {'triggered': 0} +2026-01-19 16:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[190d220c-dc99-4be0-ab88-f15119bf2eba] succeeded in 0.010189316992182285s: {'triggered': 0} +2026-01-19 16:53:31 INFO celery.app.trace Task connecthub.ldap.sync[10889aea-4f40-4499-93d5-37398adb0490] succeeded in 0.00584201401215978s: 0 +2026-01-19 16:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[92a38c4d-8cbe-40d6-8f1a-4ea926b5e35d] succeeded in 0.0032998829847201705s: {'triggered': 0} +2026-01-19 16:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5c33927c-6f20-4307-abdd-4a5235c13727] succeeded in 0.004547386983176693s: {'triggered': 0} +2026-01-19 16:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0a7ca3e9-7fe5-4d71-a2a5-c511e7945222] succeeded in 0.010214358975645155s: {'triggered': 0} +2026-01-19 16:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[79ed3fc8-7449-4604-8a76-05cfbfba25c0] succeeded in 0.012377615988953039s: {'triggered': 0} +2026-01-19 16:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b3e098a7-8f50-4814-b09a-550c52580c9e] succeeded in 0.008214146015234292s: {'triggered': 0} +2026-01-19 16:58:31 INFO celery.app.trace Task connecthub.ldap.sync[5673daea-8bf2-4d64-aa1f-f7811bb71829] succeeded in 0.009419773006811738s: 0 +2026-01-19 16:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[19248c2d-844f-4ee4-a421-8ec46b1964ba] succeeded in 0.004586844996083528s: {'triggered': 0} +2026-01-19 16:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[237184be-b9cc-4d43-a8be-5add336862be] succeeded in 0.008348020986886695s: {'triggered': 0} +2026-01-19 17:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[22436dc9-11bc-48d1-b100-337dbf9e0ec4] succeeded in 0.005256846983684227s: {'triggered': 0} +2026-01-19 17:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1d42c3bf-284f-4482-b750-1f7b0e98c516] succeeded in 0.009376107016578317s: {'triggered': 0} +2026-01-19 17:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f21d975f-6d3e-46c7-9fa2-9f24bb2c89c1] succeeded in 0.007276309974258766s: {'triggered': 0} +2026-01-19 17:03:31 INFO celery.app.trace Task connecthub.ldap.sync[8c2c1c1b-c19b-4a5f-b63c-3d1af6fe64d8] succeeded in 0.013351950998185202s: 0 +2026-01-19 17:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[cb729d6d-d674-4961-9939-6df0a8e9596f] succeeded in 0.00500847099465318s: {'triggered': 0} +2026-01-19 17:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9e7d3db3-d4d1-4915-a388-3001b081a24e] succeeded in 0.00144125398946926s: {'triggered': 0} +2026-01-19 17:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b399523c-1045-4e25-be9f-660d85afbb20] succeeded in 0.00682810100261122s: {'triggered': 0} +2026-01-19 17:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[09e6367e-effd-449d-97af-d6629b31e245] succeeded in 0.01217398900189437s: {'triggered': 0} +2026-01-19 17:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c65c1184-fd1a-49f2-ad08-01da4e31cd14] succeeded in 0.0038671770016662776s: {'triggered': 0} +2026-01-19 17:08:31 INFO celery.app.trace Task connecthub.ldap.sync[6c23cbd1-f567-453a-81d5-cd10ec811810] succeeded in 0.005129638011567295s: 0 +2026-01-19 17:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[08cf53ff-e717-4be7-9ab8-0a9ce5f5ed75] succeeded in 0.004590928001562133s: {'triggered': 0} +2026-01-19 17:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[99e75a41-846c-4730-bb77-e827da137346] succeeded in 0.010480610013473779s: {'triggered': 0} +2026-01-19 17:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5f5b09c5-55ac-404d-a05c-55fe0ff26b81] succeeded in 0.006092014984460548s: {'triggered': 0} +2026-01-19 17:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[641991d9-a8d5-4718-8b55-84267be21983] succeeded in 0.0037071759870741516s: {'triggered': 0} +2026-01-19 17:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[cd694925-038a-4b20-93de-8f5fb9c36a06] succeeded in 0.007650601997738704s: {'triggered': 0} +2026-01-19 17:13:31 INFO celery.app.trace Task connecthub.ldap.sync[128f959e-6848-42ea-8258-bde2107ee185] succeeded in 0.012437364988727495s: 0 +2026-01-19 17:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[cdcdc11c-bcb7-42ea-a6c2-ad9470b48a10] succeeded in 0.0038709670188836753s: {'triggered': 0} +2026-01-19 17:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c2dcc579-b1e0-4b92-a15a-3a7dbb88c990] succeeded in 0.004424636019393802s: {'triggered': 0} +2026-01-19 17:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[31f2dc5a-b835-4bb8-9e74-c8423828e6f5] succeeded in 0.007201393018476665s: {'triggered': 0} +2026-01-19 17:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c7bbac1b-dc44-4d9b-a673-86c8152c1b75] succeeded in 0.00651214100071229s: {'triggered': 0} +2026-01-19 17:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a5f2e1e3-c2e6-4c28-97b9-544a917f157c] succeeded in 0.005336595990229398s: {'triggered': 0} +2026-01-19 17:18:31 INFO celery.app.trace Task connecthub.ldap.sync[13597dfd-85a6-466b-b119-a162f9e7bcc4] succeeded in 0.006801687006372958s: 0 +2026-01-19 17:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8ce67532-512f-4cf6-bf4e-fe7968ee0031] succeeded in 0.005622114986181259s: {'triggered': 0} +2026-01-19 17:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ac8a472a-ca2f-4177-a111-56ed319a5ba0] succeeded in 0.00520867999875918s: {'triggered': 0} +2026-01-19 17:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[30ad7e83-9c08-43d7-8343-f35d84535dc2] succeeded in 0.006326678005279973s: {'triggered': 0} +2026-01-19 17:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e06b32bc-14d3-48c9-8ee3-47c18b6a9e33] succeeded in 0.013204895018134266s: {'triggered': 0} +2026-01-19 17:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d1d727df-e1a4-4d52-9547-78362842c26d] succeeded in 0.004972869006451219s: {'triggered': 0} +2026-01-19 17:23:31 INFO celery.app.trace Task connecthub.ldap.sync[4c4eba3f-9e35-41c6-a6fd-bdf95c955cf6] succeeded in 0.005536077020224184s: 0 +2026-01-19 17:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5382359f-25fb-4088-b808-4557108c8c60] succeeded in 0.0012332070036791265s: {'triggered': 0} +2026-01-19 17:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5fa8b647-2085-4320-b2bd-281eab08fe80] succeeded in 0.012711890012724325s: {'triggered': 0} +2026-01-19 17:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f0989301-3e77-4ef6-b4fd-19f5b04b1084] succeeded in 0.008457927004201338s: {'triggered': 0} +2026-01-19 17:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c49b06cd-10ba-49f3-9325-6b0cbe14503e] succeeded in 0.00793393500498496s: {'triggered': 0} +2026-01-19 17:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d05c3532-2df5-4e96-8cdb-aee7e4325e59] succeeded in 0.009324979007942602s: {'triggered': 0} +2026-01-19 17:28:31 INFO celery.app.trace Task connecthub.ldap.sync[4279d5e5-971c-4ba0-b8a6-ef8a2a62ebb6] succeeded in 0.005991209007333964s: 0 +2026-01-19 17:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f148a4ed-91e9-444b-a297-5cab43a87433] succeeded in 0.004147199011640623s: {'triggered': 0} +2026-01-19 17:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d44948e4-b518-489e-b604-2e40ca78bae7] succeeded in 0.009243106003850698s: {'triggered': 0} +2026-01-19 17:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[051ed4fa-2c3e-464c-a9ee-f91a15535c3c] succeeded in 0.004289552016416565s: {'triggered': 0} +2026-01-19 17:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7fe97da0-5d70-48a4-a655-76d68872a35b] succeeded in 0.012978069018572569s: {'triggered': 0} +2026-01-19 17:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9c2d3a56-8562-44fc-89f9-3430f1ca161d] succeeded in 0.0072017649945337325s: {'triggered': 0} +2026-01-19 17:33:31 INFO celery.app.trace Task connecthub.ldap.sync[660ae3e9-12db-492b-ab26-b75bff7dc0e1] succeeded in 0.005633052991470322s: 0 +2026-01-19 17:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a2afbed9-afb5-4b93-9d0d-a0366cd10eaf] succeeded in 0.004784802003996447s: {'triggered': 0} +2026-01-19 17:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[22973738-2325-4023-8884-808c0b051615] succeeded in 0.0029040070076007396s: {'triggered': 0} +2026-01-19 17:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[14f6dea6-c28b-4c26-a41a-8d5c30ab6127] succeeded in 0.017539038002723828s: {'triggered': 0} +2026-01-19 17:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d4a9787b-04c4-4093-a3dd-a39bb5c88a1b] succeeded in 0.006044679001206532s: {'triggered': 0} +2026-01-19 17:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a9e87f73-7f4b-4474-95b7-47311233bdbe] succeeded in 0.00332829900435172s: {'triggered': 0} +2026-01-19 17:38:31 INFO celery.app.trace Task connecthub.ldap.sync[ed2b1058-1442-413c-b0b6-8cd71f0cfeb3] succeeded in 0.014820948999840766s: 0 +2026-01-19 17:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6c00ac35-7c84-40b0-99fd-7f59d39d05e0] succeeded in 0.005234803014900535s: {'triggered': 0} +2026-01-19 17:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f180dd2e-3260-4d52-b99f-a34edc409876] succeeded in 0.0025138799974229187s: {'triggered': 0} +2026-01-19 17:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[544e2ce1-880f-4248-aa4e-6921c1875d03] succeeded in 0.004375301010441035s: {'triggered': 0} +2026-01-19 17:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[90dd7732-65a6-45e0-9883-a88c7d565493] succeeded in 0.008720351994270459s: {'triggered': 0} +2026-01-19 17:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e0b48c6b-82f1-40d4-be59-7a37dff95912] succeeded in 0.004418468015501276s: {'triggered': 0} +2026-01-19 17:43:31 INFO celery.app.trace Task connecthub.ldap.sync[224a7e52-b20a-4e60-8f3a-1b74ce25e11c] succeeded in 0.008239767979830503s: 0 +2026-01-19 17:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1aa3af28-c348-497c-8e61-72c181df0901] succeeded in 0.0039673830033279955s: {'triggered': 0} +2026-01-19 17:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[49c9167c-cf5c-413d-9dbb-ffb683c4e74e] succeeded in 0.007626724021974951s: {'triggered': 0} +2026-01-19 17:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7e162df6-4d85-4a93-91e4-4c19bb5fd72d] succeeded in 0.004225926008075476s: {'triggered': 0} +2026-01-19 17:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fd46a22c-3375-4ba0-9491-9814a84d8960] succeeded in 0.013917570991907269s: {'triggered': 0} +2026-01-19 17:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[03218e2b-61ce-4a80-9442-5c070a0ab912] succeeded in 0.00865668398910202s: {'triggered': 0} +2026-01-19 17:48:31 INFO celery.app.trace Task connecthub.ldap.sync[d143ccde-3671-464b-89f6-dccac85067c8] succeeded in 0.0055053030082490295s: 0 +2026-01-19 17:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1328c58f-ce8a-4a13-abff-49d488459cc3] succeeded in 0.0057098450197372586s: {'triggered': 0} +2026-01-19 17:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3cd7e844-a0d8-4d73-9737-59b6bebbbffb] succeeded in 0.018639122979948297s: {'triggered': 0} +2026-01-19 17:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[668766dc-db00-4726-8785-e3b1457ac9fd] succeeded in 0.005754804005846381s: {'triggered': 0} +2026-01-19 17:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e9ca7f56-35ad-45b4-9dd7-2f42a62434a7] succeeded in 0.006111054011853412s: {'triggered': 0} +2026-01-19 17:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b0c3ef7c-3489-4c0d-95d3-e105fcb3b027] succeeded in 0.023913882992928848s: {'triggered': 0} +2026-01-19 17:53:31 INFO celery.app.trace Task connecthub.ldap.sync[7e68d536-1b14-4b9b-9e04-07c811f484ba] succeeded in 0.008226600009948015s: 0 +2026-01-19 17:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fdb445d4-854b-4401-acd8-7616a82061a4] succeeded in 0.004155675007496029s: {'triggered': 0} +2026-01-19 17:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[081debce-e506-4d86-ba7d-d6c4a5d2f203] succeeded in 0.0035289239895064384s: {'triggered': 0} +2026-01-19 17:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[974bec82-e231-45fa-865f-c3546d28e274] succeeded in 0.0030976730049587786s: {'triggered': 0} +2026-01-19 17:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9663aa0f-70f2-4d12-9b46-92ba69cc755a] succeeded in 0.028303684026468545s: {'triggered': 0} +2026-01-19 17:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[97c59024-ec53-42a5-a4e9-f3c5e06c4d66] succeeded in 0.008772726985625923s: {'triggered': 0} +2026-01-19 17:58:31 INFO celery.app.trace Task connecthub.ldap.sync[142dd643-8176-48e1-8e06-95cf99c00bfb] succeeded in 0.005021135992137715s: 0 +2026-01-19 17:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6f0b8138-9303-4bc8-a8b9-271a18f924ce] succeeded in 0.002594464021967724s: {'triggered': 0} +2026-01-19 17:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f576cb0d-2a00-475d-be54-9d800fd29150] succeeded in 0.00921289500547573s: {'triggered': 0} +2026-01-19 18:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5743a6e6-ec65-44dd-9602-028c8d9a080d] succeeded in 0.0033363830007147044s: {'triggered': 0} +2026-01-19 18:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7320eb6c-b8a9-466b-a1d0-2b145b9dcc5a] succeeded in 0.0011616690026130527s: {'triggered': 0} +2026-01-19 18:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5e2cf7e8-9336-423d-a7a7-c30d98b79ce2] succeeded in 0.00927247799700126s: {'triggered': 0} +2026-01-19 18:03:31 INFO celery.app.trace Task connecthub.ldap.sync[602e6772-51e8-4669-9f83-9937261a5da2] succeeded in 0.004824219009606168s: 0 +2026-01-19 18:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[aa285d44-d922-4c4d-be42-334820ca9f39] succeeded in 0.004487301979679614s: {'triggered': 0} +2026-01-19 18:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a78fd001-6402-4655-88ab-d0c271674e1e] succeeded in 0.009700436989078298s: {'triggered': 0} +2026-01-19 18:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6fa44d76-a226-44e4-8d09-2f00111a1632] succeeded in 0.006529597012558952s: {'triggered': 0} +2026-01-19 18:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8130e863-bc38-4daa-bd98-6917511f6665] succeeded in 0.003807675006100908s: {'triggered': 0} +2026-01-19 18:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f0d9d634-6c06-44cf-9adb-a536e2374989] succeeded in 0.007731683988822624s: {'triggered': 0} +2026-01-19 18:08:31 INFO celery.app.trace Task connecthub.ldap.sync[9ed79f58-3d30-46e3-8880-f4852f5c3767] succeeded in 0.006029262993251905s: 0 +2026-01-19 18:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[569545d8-9237-4321-affc-a77d795916b1] succeeded in 0.0030800480162724853s: {'triggered': 0} +2026-01-19 18:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f59f1803-35fb-4e76-b360-f291e7904377] succeeded in 0.004516301996773109s: {'triggered': 0} +2026-01-19 18:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3a738428-5823-4170-86cb-6e26a80ec604] succeeded in 0.010662522981874645s: {'triggered': 0} +2026-01-19 18:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[86e17b7f-8a26-4292-ad5d-116dc0378129] succeeded in 0.006660388986347243s: {'triggered': 0} +2026-01-19 18:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[eb2a78ae-248b-489d-97c6-b406f2ffceba] succeeded in 0.0038024240056984127s: {'triggered': 0} +2026-01-19 18:13:31 INFO celery.app.trace Task connecthub.ldap.sync[5bda4b4e-ef96-49a9-adc6-343eefdf8db3] succeeded in 0.009153352002613246s: 0 +2026-01-19 18:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[74b8cbb0-a038-4be3-8f5c-a60cc44db1be] succeeded in 0.004011216980870813s: {'triggered': 0} +2026-01-19 18:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dab7f92b-d9eb-41c7-a813-fbe34e068de7] succeeded in 0.006283889000769705s: {'triggered': 0} +2026-01-19 18:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5a438326-7ec8-4a9d-9297-4104b3fb462d] succeeded in 0.0044194259971845895s: {'triggered': 0} +2026-01-19 18:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c2dc7c0a-6307-441e-8c07-1f5b90c00696] succeeded in 0.008820727001875639s: {'triggered': 0} +2026-01-19 18:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0934751e-fb97-4a5a-98c0-bbb029d3486c] succeeded in 0.004884593014139682s: {'triggered': 0} +2026-01-19 18:18:31 INFO celery.app.trace Task connecthub.ldap.sync[84e90d27-6578-4477-be62-89b6f1543088] succeeded in 0.0062393049884121865s: 0 +2026-01-19 18:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0d6d722f-7258-4880-90a7-6f86f1ebd108] succeeded in 0.0038361329934559762s: {'triggered': 0} +2026-01-19 18:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[023ed003-2c82-492a-9422-1387ec459474] succeeded in 0.0062983050011098385s: {'triggered': 0} +2026-01-19 18:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[01e4ab69-f914-4f75-b589-c193befcfb29] succeeded in 0.008019975008210167s: {'triggered': 0} +2026-01-19 18:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d36a7393-4cbe-4cb4-8fb5-6da89ee167b7] succeeded in 0.0037899660237599164s: {'triggered': 0} +2026-01-19 18:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[47f2f056-b832-4233-9139-4f310a158f30] succeeded in 0.00361977398279123s: {'triggered': 0} +2026-01-19 18:23:31 INFO celery.app.trace Task connecthub.ldap.sync[9c1d0de9-9721-4302-a7e2-b4a0f10707d1] succeeded in 0.010138229990843683s: 0 +2026-01-19 18:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[687f730e-2259-4d97-9605-6cb306da8e38] succeeded in 0.005138635984621942s: {'triggered': 0} +2026-01-19 18:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c67d4ed2-3f87-4ecf-bdda-8439e44dc915] succeeded in 0.004359282000223175s: {'triggered': 0} +2026-01-19 18:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3716a140-c270-4c85-857e-cb3a0228551a] succeeded in 0.003996990999439731s: {'triggered': 0} +2026-01-19 18:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[376c63ce-a425-4559-9ad9-dbe70de4678f] succeeded in 0.011632165987975895s: {'triggered': 0} +2026-01-19 18:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c2966404-fd52-40c5-91e3-b0756b3fd5a8] succeeded in 0.01203500002156943s: {'triggered': 0} +2026-01-19 18:28:31 INFO celery.app.trace Task connecthub.ldap.sync[dbbef92e-8a62-47ac-9030-3cb4dc08a7e1] succeeded in 0.008866970019880682s: 0 +2026-01-19 18:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6197c75e-5d27-414e-ba0f-d4fa333ae30a] succeeded in 0.0026078369992319494s: {'triggered': 0} +2026-01-19 18:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[705f1958-0235-4390-a06d-d37c36de0998] succeeded in 0.006935968005564064s: {'triggered': 0} +2026-01-19 18:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6649a03b-210b-46dd-8003-459615b42c0a] succeeded in 0.01512073801131919s: {'triggered': 0} +2026-01-19 18:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6259f98c-32f5-4544-8bbd-7031b2055259] succeeded in 0.00940722698578611s: {'triggered': 0} +2026-01-19 18:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[31d0633e-4e81-458b-90a1-5dfd9e464b7c] succeeded in 0.006290679011726752s: {'triggered': 0} +2026-01-19 18:33:31 INFO celery.app.trace Task connecthub.ldap.sync[3c550d4d-9e08-4394-8776-ec6def3f50c6] succeeded in 0.007317139010410756s: 0 +2026-01-19 18:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f11cd86e-2a01-4a6a-90d0-f72a4358482b] succeeded in 0.003992466983618215s: {'triggered': 0} +2026-01-19 18:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[453d2ae4-a0a7-49cd-93c7-2b1791ef174f] succeeded in 0.010285519994795322s: {'triggered': 0} +2026-01-19 18:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[611c6fce-3933-4d2c-aa40-440a5ec541dd] succeeded in 0.00756672301213257s: {'triggered': 0} +2026-01-19 18:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8fb508f0-f2b6-48fd-829a-2f47ecb271f8] succeeded in 0.004667675995733589s: {'triggered': 0} +2026-01-19 18:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f6eeb6ab-ef97-4962-8af0-cbf582f9459f] succeeded in 0.01945663697551936s: {'triggered': 0} +2026-01-19 18:38:31 INFO celery.app.trace Task connecthub.ldap.sync[27b19f0a-94e6-42d8-826a-75966a5cfa9d] succeeded in 0.007774472993332893s: 0 +2026-01-19 18:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e25f8610-9899-4c4f-99a9-740411972336] succeeded in 0.0030645890219602734s: {'triggered': 0} +2026-01-19 18:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[caab84ad-c58f-48aa-b702-d6fa1fee2639] succeeded in 0.005097807996207848s: {'triggered': 0} +2026-01-19 18:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c393d242-f19f-4cd7-8536-5933e84989cc] succeeded in 0.007633222994627431s: {'triggered': 0} +2026-01-19 18:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f3a3f68a-8d4e-481c-8c6c-3be4a7deadca] succeeded in 0.00933247001376003s: {'triggered': 0} +2026-01-19 18:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3e81746c-e8c9-4d3b-bfa3-ef35453d4234] succeeded in 0.009652882989030331s: {'triggered': 0} +2026-01-19 18:43:31 INFO celery.app.trace Task connecthub.ldap.sync[4789c7d9-c4e5-4a69-936a-6907958316d9] succeeded in 0.0071000930038280785s: 0 +2026-01-19 18:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c4c5b9b2-b3c7-49c0-a265-419c7981a041] succeeded in 0.0027306959964334965s: {'triggered': 0} +2026-01-19 18:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[310740c7-7ad0-4942-9c03-17580e9d8e59] succeeded in 0.006302513007540256s: {'triggered': 0} +2026-01-19 18:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3a71f376-0fe9-444c-afd7-8735e9ddcc89] succeeded in 0.015328587993280962s: {'triggered': 0} +2026-01-19 18:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[cd16b1b6-22da-4c43-af77-291a79e4e8f1] succeeded in 0.005862751975655556s: {'triggered': 0} +2026-01-19 18:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[83e410b7-37ac-42c2-98f3-f543a3f8d2c0] succeeded in 0.012895940017187968s: {'triggered': 0} +2026-01-19 18:48:31 INFO celery.app.trace Task connecthub.ldap.sync[99700847-0fc7-48f9-89c1-fa0668b4768c] succeeded in 0.006974388001253828s: 0 +2026-01-19 18:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9b8b41af-1937-4db2-97a2-bb2805ea2b97] succeeded in 0.0016146699781529605s: {'triggered': 0} +2026-01-19 18:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c2158ec2-1cf9-40e4-b087-b441af0c623b] succeeded in 0.010126434994162992s: {'triggered': 0} +2026-01-19 18:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e9542491-8c7c-4e5c-95ff-66e26982237f] succeeded in 0.005301672994391993s: {'triggered': 0} +2026-01-19 18:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2cb345bb-dc1d-4cdf-887f-783663e5110b] succeeded in 0.006766341015463695s: {'triggered': 0} +2026-01-19 18:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4395b4b1-a6fd-4b81-8670-fc5f20d42deb] succeeded in 0.014087767020100728s: {'triggered': 0} +2026-01-19 18:53:31 INFO celery.app.trace Task connecthub.ldap.sync[998867e2-1992-4d9e-a707-d3e0c153f3e3] succeeded in 0.006805383018217981s: 0 +2026-01-19 18:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c1d78465-4929-468f-9b1b-f8cd8d50ef0f] succeeded in 0.0028762529836967587s: {'triggered': 0} +2026-01-19 18:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a03cda20-63b3-42c6-a1ff-7d1219a56e27] succeeded in 0.005066325014922768s: {'triggered': 0} +2026-01-19 18:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d9f60838-b0ad-4d72-89fb-831fc1d9a769] succeeded in 0.00607900699833408s: {'triggered': 0} +2026-01-19 18:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[024492e0-5e7c-42c2-8a58-559399a3f2a9] succeeded in 0.010351109987823293s: {'triggered': 0} +2026-01-19 18:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[57f46d2f-6083-44c1-99fc-fcaaf156cee6] succeeded in 0.005775801982963458s: {'triggered': 0} +2026-01-19 18:58:31 INFO celery.app.trace Task connecthub.ldap.sync[a6e7b087-9ecc-48f1-a760-d835c68a2a25] succeeded in 0.008185037993825972s: 0 +2026-01-19 18:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fce37f1d-09a0-4f14-8fc7-eb2c324b18fd] succeeded in 0.00630137202097103s: {'triggered': 0} +2026-01-19 18:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[bbc48b18-2c8e-4b07-91a5-2a55c76953da] succeeded in 0.00649199599865824s: {'triggered': 0} +2026-01-19 19:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2481f647-64dc-4a84-97f8-627c66ff1bde] succeeded in 0.010638937004841864s: {'triggered': 0} +2026-01-19 19:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[742ffca8-971c-40cf-addb-274323e61971] succeeded in 0.004189491999568418s: {'triggered': 0} +2026-01-19 19:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3cf3bdbc-1efd-47a1-ae2a-66e27eb3651d] succeeded in 0.009823800006415695s: {'triggered': 0} +2026-01-19 19:03:31 INFO celery.app.trace Task connecthub.ldap.sync[b3d12d85-fa7b-48fe-84cd-e1142809636b] succeeded in 0.00961334101157263s: 0 +2026-01-19 19:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b87829b9-8a68-49fa-950b-4d84ba4b8f79] succeeded in 0.004099754005437717s: {'triggered': 0} +2026-01-19 19:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[66dfc415-fdc0-4e3e-a15a-30394e7959ce] succeeded in 0.0044661709980573505s: {'triggered': 0} +2026-01-19 19:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1319fadb-0446-45a2-b5df-31868180a074] succeeded in 0.005710880010155961s: {'triggered': 0} +2026-01-19 19:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[49b3fa5b-5566-41c0-b787-8635a9243944] succeeded in 0.02150676801102236s: {'triggered': 0} +2026-01-19 19:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1e8c8b60-6889-4f9e-b3d5-4d65a58010d0] succeeded in 0.0031845030025579035s: {'triggered': 0} +2026-01-19 19:08:31 INFO celery.app.trace Task connecthub.ldap.sync[64bbf5ed-ba0e-4915-8404-483c042f70dd] succeeded in 0.002613919001305476s: 0 +2026-01-19 19:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[0b412e81-3601-4e34-b94b-27109f51aa79] succeeded in 0.0028105860110372305s: {'triggered': 0} +2026-01-19 19:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2644da40-164b-4f7d-ac10-26f54c7c4ce1] succeeded in 0.024219068989623338s: {'triggered': 0} +2026-01-19 19:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[40b0fe64-f825-46d8-8107-6ce46546aaf6] succeeded in 0.003614919987739995s: {'triggered': 0} +2026-01-19 19:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3e8744b5-0941-4697-824c-c6d864356984] succeeded in 0.00933989102486521s: {'triggered': 0} +2026-01-19 19:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ad2864a3-1a13-4490-a2fa-a2c7a00b9cb8] succeeded in 0.009739132976392284s: {'triggered': 0} +2026-01-19 19:13:31 INFO celery.app.trace Task connecthub.ldap.sync[ae81e2d4-8169-4502-ac4d-49ac9989cacb] succeeded in 0.009623619000194594s: 0 +2026-01-19 19:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[78ea38fa-4bd1-43a4-9d26-f8cf972321a8] succeeded in 0.003808162990026176s: {'triggered': 0} +2026-01-19 19:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a6e01cd3-1f21-43a0-9165-ae2339d150ed] succeeded in 0.005877748015336692s: {'triggered': 0} +2026-01-19 19:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d08d53b6-023b-480d-869b-e2dc579ef087] succeeded in 0.008081324980594218s: {'triggered': 0} +2026-01-19 19:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d9e09b17-5b1b-4689-9c06-32abecb17e7d] succeeded in 0.009177626023301855s: {'triggered': 0} +2026-01-19 19:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[05af3435-1676-4fad-a873-6086d9d43bc4] succeeded in 0.005150718992808834s: {'triggered': 0} +2026-01-19 19:18:31 INFO celery.app.trace Task connecthub.ldap.sync[675769c1-76ac-4d47-9ede-4df4693b6aa4] succeeded in 0.0034944649960380048s: 0 +2026-01-19 19:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d39bfd7a-b0cf-4b90-bb9b-c67d7c0c95e3] succeeded in 0.002588671981357038s: {'triggered': 0} +2026-01-19 19:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6a4ac90c-dd6d-4a0b-85c9-dc4f4ad40c18] succeeded in 0.004636088007828221s: {'triggered': 0} +2026-01-19 19:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c51e2496-f933-4f13-b48c-57bb2ff9e6b7] succeeded in 0.019791975006228313s: {'triggered': 0} +2026-01-19 19:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7b0be92c-dee8-4249-b116-fb138c2a558d] succeeded in 0.004488753998884931s: {'triggered': 0} +2026-01-19 19:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fbbde58b-3076-47f7-9dd3-917e2e61e79e] succeeded in 0.004055508004967123s: {'triggered': 0} +2026-01-19 19:23:31 INFO celery.app.trace Task connecthub.ldap.sync[3bcc2f3d-206f-48ff-b98b-592fdfa932db] succeeded in 0.00873464101459831s: 0 +2026-01-19 19:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1cbadda4-df16-48ee-9252-3646b24d93b1] succeeded in 0.005899720010347664s: {'triggered': 0} +2026-01-19 19:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[770ff4c7-745b-486f-b9af-26069bd5d874] succeeded in 0.005965761985862628s: {'triggered': 0} +2026-01-19 19:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a80a5197-b7dd-449c-b611-68b38c33649b] succeeded in 0.0048896340013016015s: {'triggered': 0} +2026-01-19 19:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e5545344-f0a4-41cf-b450-7ef8428a76b1] succeeded in 0.040521518007153645s: {'triggered': 0} +2026-01-19 19:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5e3187b6-0693-46dd-bc98-d031ab56c193] succeeded in 0.006851720972917974s: {'triggered': 0} +2026-01-19 19:28:31 INFO celery.app.trace Task connecthub.ldap.sync[92e0e7d0-fc08-49e0-bc4f-2482992eef5d] succeeded in 0.015220219996990636s: 0 +2026-01-19 19:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5efe24af-7654-40b9-8328-46b11e46917a] succeeded in 0.005118239991134033s: {'triggered': 0} +2026-01-19 19:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[be17f50d-9f43-4f21-a83d-81609015946a] succeeded in 0.0061804139986634254s: {'triggered': 0} +2026-01-19 19:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8867eb2e-386f-4e3d-8f6b-1050309e7366] succeeded in 0.01926814200123772s: {'triggered': 0} +2026-01-19 19:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[522fd1c6-628e-48db-afd3-3bfb7380652c] succeeded in 0.013996458990732208s: {'triggered': 0} +2026-01-19 19:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[400a4037-9259-44b5-a34c-0f8851680d8e] succeeded in 0.01605760701932013s: {'triggered': 0} +2026-01-19 19:33:31 INFO celery.app.trace Task connecthub.ldap.sync[3ecd5baf-46b2-448f-80d6-97d556a8e9fb] succeeded in 0.03226163101498969s: 0 +2026-01-19 19:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c58f9104-b4ff-492e-88cf-7718484fe1ca] succeeded in 0.004763268982060254s: {'triggered': 0} +2026-01-19 19:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ff4d4e68-b94a-45e0-8774-b01a3db4e8ee] succeeded in 0.0069368059921544045s: {'triggered': 0} +2026-01-19 19:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d61cb9e0-87da-4784-af81-2508c177714d] succeeded in 0.00705830700462684s: {'triggered': 0} +2026-01-19 19:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dd461ca9-0cd5-4f26-a51c-b1e299ebc746] succeeded in 0.003964270988944918s: {'triggered': 0} +2026-01-19 19:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[374771b9-39be-4ea6-8660-5640bacc9942] succeeded in 0.02069895699969493s: {'triggered': 0} +2026-01-19 19:38:31 INFO celery.app.trace Task connecthub.ldap.sync[272485a7-8cec-4941-8e38-786955e896ca] succeeded in 0.00940855999942869s: 0 +2026-01-19 19:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[eefaa209-dddf-4fc1-98c5-b391f68aea78] succeeded in 0.004883843008428812s: {'triggered': 0} +2026-01-19 19:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[19206803-eb18-4a44-a883-e369df06a13b] succeeded in 0.003962842019973323s: {'triggered': 0} +2026-01-19 19:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[2cc5a96a-5e84-404a-845e-6453b03e66be] succeeded in 0.019629083981271833s: {'triggered': 0} +2026-01-19 19:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e9a2a2ce-35a9-4431-aca1-7ae38e9d1436] succeeded in 0.01320965401828289s: {'triggered': 0} +2026-01-19 19:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a8e92c35-e1c0-4394-86d3-3d5397d17490] succeeded in 0.018222039012471214s: {'triggered': 0} +2026-01-19 19:43:31 INFO celery.app.trace Task connecthub.ldap.sync[75466fe5-1ba8-4861-b939-7c1379446418] succeeded in 0.008265851007308811s: 0 +2026-01-19 19:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[851f3309-d477-4137-a6ee-70e67ddba42a] succeeded in 0.004452800989383832s: {'triggered': 0} +2026-01-19 19:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[29a4fe86-a6ec-4b02-8cf3-4485ca3b22de] succeeded in 0.0252927620022092s: {'triggered': 0} +2026-01-19 19:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a1d45d34-6d97-43bb-a259-4616dff2dc8a] succeeded in 0.003946007986087352s: {'triggered': 0} +2026-01-19 19:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fc3ab462-7737-4997-8835-c6e533bc27ef] succeeded in 0.008845603006193414s: {'triggered': 0} +2026-01-19 19:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[13de760f-a73c-4235-83d3-195fb1595242] succeeded in 0.004589259013300762s: {'triggered': 0} +2026-01-19 19:48:31 INFO celery.app.trace Task connecthub.ldap.sync[808ae1fa-94b9-46e9-bc08-0ff6091f3ac8] succeeded in 0.007619183015776798s: 0 +2026-01-19 19:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5b270215-7064-411f-8b85-efff9c855ac3] succeeded in 0.004009133001090959s: {'triggered': 0} +2026-01-19 19:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e38bc9ca-0670-4dc6-bac0-c9ce8f3a81f2] succeeded in 0.0173147410096135s: {'triggered': 0} +2026-01-19 19:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[438d28ba-6497-4d23-b4cf-df347df39942] succeeded in 0.004645926004741341s: {'triggered': 0} +2026-01-19 19:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[62ea2afd-dd14-49dd-a989-eb5a2c07ba19] succeeded in 0.02512325899442658s: {'triggered': 0} +2026-01-19 19:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f1b11dd6-072b-45ae-819e-2329bb870d8f] succeeded in 0.003144006012007594s: {'triggered': 0} +2026-01-19 19:53:31 INFO celery.app.trace Task connecthub.ldap.sync[851598fd-8ef3-45d3-9be7-e559ddf2a867] succeeded in 0.005914885987294838s: 0 +2026-01-19 19:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[6683c5e8-e0df-446c-92f9-e38ec6a826ea] succeeded in 0.0034124239755328745s: {'triggered': 0} +2026-01-19 19:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8662fb1d-2b4e-4914-b85e-c98a7a14ed93] succeeded in 0.004540175985312089s: {'triggered': 0} +2026-01-19 19:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[645209ab-0886-4fbf-806c-118be2000c3a] succeeded in 0.01088235600036569s: {'triggered': 0} +2026-01-19 19:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f7a15649-5fef-4124-9b02-99f3113a271a] succeeded in 0.006957181001780555s: {'triggered': 0} +2026-01-19 19:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[30f44811-ba6c-496e-870b-0010d0d8dc0f] succeeded in 0.014826280996203423s: {'triggered': 0} +2026-01-19 19:58:31 INFO celery.app.trace Task connecthub.ldap.sync[c003e411-9f90-4641-823d-ff4aa84d244d] succeeded in 0.009920812997734174s: 0 +2026-01-19 19:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ac25ce10-5e83-4bc4-a8e4-918ad7dbd00a] succeeded in 0.003512715979013592s: {'triggered': 0} +2026-01-19 19:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dbd8ef16-4fec-48cc-8f44-ecb9525ea932] succeeded in 0.005104844021843746s: {'triggered': 0} +2026-01-19 20:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[66159cc4-9352-4743-ba1b-205f671c974c] succeeded in 0.00665617999038659s: {'triggered': 0} +2026-01-19 20:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a1ae51a0-84a8-436a-a408-1a7cc7096d3f] succeeded in 0.010250605002511293s: {'triggered': 0} +2026-01-19 20:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[01edb0a5-c896-476d-af75-f4b70a071b7c] succeeded in 0.0055573869904037565s: {'triggered': 0} +2026-01-19 20:03:31 INFO celery.app.trace Task connecthub.ldap.sync[6b5c4cde-c46e-4ad5-b0f5-9d9e185e152e] succeeded in 0.008573059982154518s: 0 +2026-01-19 20:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[23a3e123-6232-4fb3-ae50-e6f3ed41eb92] succeeded in 0.004430550994584337s: {'triggered': 0} +2026-01-19 20:04:33 INFO celery.app.trace Task connecthub.dispatcher.tick[55caffc0-1798-4b27-af3e-27863b418148] succeeded in 0.005696845997590572s: {'triggered': 0} +2026-01-19 20:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[bfdae07d-6b7b-4596-9e9c-81b79fd2662c] succeeded in 0.005567011015955359s: {'triggered': 0} +2026-01-19 20:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8944e613-77f8-4fed-b9c3-a3795f020fb5] succeeded in 0.008218255010433495s: {'triggered': 0} +2026-01-19 20:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d6077709-20a1-48dd-920a-d724df78e924] succeeded in 0.0030424179858528078s: {'triggered': 0} +2026-01-19 20:08:31 INFO celery.app.trace Task connecthub.ldap.sync[98d92f9f-2564-4ee3-a7d6-341df54c5d0c] succeeded in 0.007208056980744004s: 0 +2026-01-19 20:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9fc56546-0e55-41dc-b94a-c4ccc8ae54a1] succeeded in 0.004135833005420864s: {'triggered': 0} +2026-01-19 20:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[02e63ffe-1e26-493b-a0bd-7a80390fed08] succeeded in 0.0071465410001110286s: {'triggered': 0} +2026-01-19 20:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9c4af639-1b78-4a30-93a2-703d9c0677fd] succeeded in 0.003964383009588346s: {'triggered': 0} +2026-01-19 20:11:33 INFO celery.app.trace Task connecthub.dispatcher.tick[21b4c98e-6db7-46d1-b981-8020c48bb03a] succeeded in 0.005364712997106835s: {'triggered': 0} +2026-01-19 20:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[c1488d64-9ad9-4d78-8054-2437fe647e2d] succeeded in 0.00794285099254921s: {'triggered': 0} +2026-01-19 20:13:31 INFO celery.app.trace Task connecthub.ldap.sync[b78620f9-cc2e-46e9-8f14-dc97e4e80185] succeeded in 0.006097677018260583s: 0 +2026-01-19 20:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8098e356-b9fe-478f-a0df-b325b1ae6098] succeeded in 0.002896963997045532s: {'triggered': 0} +2026-01-19 20:14:33 INFO celery.app.trace Task connecthub.dispatcher.tick[61196bee-6831-4fdc-8a70-d0f3844b2652] succeeded in 0.005303134006680921s: {'triggered': 0} +2026-01-19 20:15:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d6e256fe-2521-47f5-8d8b-e11e018a0a39] succeeded in 0.004225091979606077s: {'triggered': 0} +2026-01-19 20:16:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8911fe25-2386-453a-b6a8-882ff9691486] succeeded in 0.009611060988390818s: {'triggered': 0} +2026-01-19 20:17:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3b9515f1-f180-4440-a07b-86c04178166e] succeeded in 0.005498970014741644s: {'triggered': 0} +2026-01-19 20:18:31 INFO celery.app.trace Task connecthub.ldap.sync[440b6204-eb56-46d0-83ea-d3d6eac417e2] succeeded in 0.005732763005653396s: 0 +2026-01-19 20:18:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d74c8570-f9df-487f-a829-31405b88a281] succeeded in 0.0036710489948745817s: {'triggered': 0} +2026-01-19 20:19:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ed7bb15e-e20d-4d71-bb2a-7e9ffb1b57fe] succeeded in 0.01011572900461033s: {'triggered': 0} +2026-01-19 20:20:33 INFO celery.app.trace Task connecthub.dispatcher.tick[e1a27b94-20a3-4f7f-a3d4-4d1ec0f351a7] succeeded in 0.003932423976948485s: {'triggered': 0} +2026-01-19 20:21:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9379eba9-bc1b-42bd-baf0-623a8b5ea3fc] succeeded in 0.012805400998331606s: {'triggered': 0} +2026-01-19 20:22:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d594f167-4a08-45bc-b7af-45bcfe5eb49b] succeeded in 0.006187970982864499s: {'triggered': 0} +2026-01-19 20:23:31 INFO celery.app.trace Task connecthub.ldap.sync[e3e9a591-b589-4937-8cbf-8a5c472adfe6] succeeded in 0.017702701996313408s: 0 +2026-01-19 20:23:33 INFO celery.app.trace Task connecthub.dispatcher.tick[63b578de-e2a4-409f-b4e3-48974fd94b02] succeeded in 0.006854097009636462s: {'triggered': 0} +2026-01-19 20:24:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b262e5d4-4b0e-4bea-9364-b50d6f4a3dbe] succeeded in 0.004172299988567829s: {'triggered': 0} +2026-01-19 20:25:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a1aa8ee4-c4c9-4faf-a689-c20b69fc40e5] succeeded in 0.004524009011220187s: {'triggered': 0} +2026-01-19 20:26:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a7c67a8d-08cf-48e7-a879-7fa66e89b2f1] succeeded in 0.012333484017290175s: {'triggered': 0} +2026-01-19 20:27:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a022e0a2-ef45-428e-8903-13b170d120df] succeeded in 0.008726852014660835s: {'triggered': 0} +2026-01-19 20:28:31 INFO celery.app.trace Task connecthub.ldap.sync[66727a32-f45f-41e6-af3d-adfbd67a42b6] succeeded in 0.006157305004308s: 0 +2026-01-19 20:28:33 INFO celery.app.trace Task connecthub.dispatcher.tick[dd98c1e3-d90c-4eeb-bc24-a9d0a46b629e] succeeded in 0.0034155909961555153s: {'triggered': 0} +2026-01-19 20:29:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5beefb13-2648-40d9-83c2-a5329b0890d5] succeeded in 0.011754066013963893s: {'triggered': 0} +2026-01-19 20:30:33 INFO celery.app.trace Task connecthub.dispatcher.tick[fb5b3b7e-56cd-410f-b597-0f4554142627] succeeded in 0.005276593990856782s: {'triggered': 0} +2026-01-19 20:31:33 INFO celery.app.trace Task connecthub.dispatcher.tick[ef773f96-8f2b-4eb9-8b3a-65f67795fed7] succeeded in 0.014631654979893938s: {'triggered': 0} +2026-01-19 20:32:33 INFO celery.app.trace Task connecthub.dispatcher.tick[78a46e9e-ac2d-4ca7-8c24-2c007288949c] succeeded in 0.007124805997591466s: {'triggered': 0} +2026-01-19 20:33:31 INFO celery.app.trace Task connecthub.ldap.sync[0c933b3d-6ed7-4bb4-8384-9bedf3b9c45c] succeeded in 0.00574997000512667s: 0 +2026-01-19 20:33:33 INFO celery.app.trace Task connecthub.dispatcher.tick[99748cb1-a55e-4b65-8064-3ac1804dd188] succeeded in 0.004526008997345343s: {'triggered': 0} +2026-01-19 20:34:33 INFO celery.app.trace Task connecthub.dispatcher.tick[d405cbf4-eba3-4e11-8840-139a4feb75f4] succeeded in 0.008518141985405236s: {'triggered': 0} +2026-01-19 20:35:33 INFO celery.app.trace Task connecthub.dispatcher.tick[31da4ee1-87f7-47b5-a2c9-6ec1213a41b6] succeeded in 0.006069719995139167s: {'triggered': 0} +2026-01-19 20:36:33 INFO celery.app.trace Task connecthub.dispatcher.tick[54169d47-782e-426d-92e5-8625d83eb622] succeeded in 0.0035231740039307624s: {'triggered': 0} +2026-01-19 20:37:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f4155afd-e6f2-40cf-8a70-54ea74d48318] succeeded in 0.01972912301425822s: {'triggered': 0} +2026-01-19 20:38:31 INFO celery.app.trace Task connecthub.ldap.sync[fa46fd6d-23fe-411b-ae37-105be7b6c682] succeeded in 0.00923205999424681s: 0 +2026-01-19 20:38:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a6c0963c-0ba4-46ba-992d-abd22cd35f53] succeeded in 0.004731801978778094s: {'triggered': 0} +2026-01-19 20:39:33 INFO celery.app.trace Task connecthub.dispatcher.tick[8f5b4513-12b4-4adc-a7a5-2ca1512c0c29] succeeded in 0.008822183997835964s: {'triggered': 0} +2026-01-19 20:40:33 INFO celery.app.trace Task connecthub.dispatcher.tick[f953f0d4-a8b7-444f-8b56-e6409bfb8aa4] succeeded in 0.002947506000055s: {'triggered': 0} +2026-01-19 20:41:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4a61737c-7e2b-4e0b-8d18-eebbbd687816] succeeded in 0.00548117799917236s: {'triggered': 0} +2026-01-19 20:42:33 INFO celery.app.trace Task connecthub.dispatcher.tick[1f32348f-c481-4abd-822e-ef4ce6eecf5f] succeeded in 0.004312716977437958s: {'triggered': 0} +2026-01-19 20:43:31 INFO celery.app.trace Task connecthub.ldap.sync[3f4d7fc1-3412-4260-8380-1f82f2d458e5] succeeded in 0.01668232900556177s: 0 +2026-01-19 20:43:33 INFO celery.app.trace Task connecthub.dispatcher.tick[52975f94-ee3d-4643-8c99-60798b505513] succeeded in 0.007464952010195702s: {'triggered': 0} +2026-01-19 20:44:33 INFO celery.app.trace Task connecthub.dispatcher.tick[283b17a0-41b8-4e15-b97c-5b83301264f9] succeeded in 0.005014801979996264s: {'triggered': 0} +2026-01-19 20:45:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5e2ba48d-771d-423f-a9a8-7ac3549b556f] succeeded in 0.004478849994484335s: {'triggered': 0} +2026-01-19 20:46:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4e2040e3-6133-48c6-9f36-3851e7931403] succeeded in 0.009464910021051764s: {'triggered': 0} +2026-01-19 20:47:33 INFO celery.app.trace Task connecthub.dispatcher.tick[afd8a05e-b8a9-4fc8-91f4-801d1606fac2] succeeded in 0.008670233015436679s: {'triggered': 0} +2026-01-19 20:48:31 INFO celery.app.trace Task connecthub.ldap.sync[92286018-ddc0-4ca2-97dc-f2103129b0a6] succeeded in 0.00597668401314877s: 0 +2026-01-19 20:48:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4af722b5-a1d6-435a-8ee8-bde4de3eebbe] succeeded in 0.003892386012012139s: {'triggered': 0} +2026-01-19 20:49:33 INFO celery.app.trace Task connecthub.dispatcher.tick[26c76a9f-ff8a-4499-9516-a058ad60ce87] succeeded in 0.0106513159989845s: {'triggered': 0} +2026-01-19 20:50:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b7231125-a99e-4ec2-8307-29883b646150] succeeded in 0.00697851600125432s: {'triggered': 0} +2026-01-19 20:51:33 INFO celery.app.trace Task connecthub.dispatcher.tick[7eb1ea62-3403-444b-afdf-3ceab2f0235e] succeeded in 0.012304859003052115s: {'triggered': 0} +2026-01-19 20:52:33 INFO celery.app.trace Task connecthub.dispatcher.tick[5c56a4f4-6410-4e2e-a9af-cc4f1e23d3e9] succeeded in 0.004189300001598895s: {'triggered': 0} +2026-01-19 20:53:31 INFO celery.app.trace Task connecthub.ldap.sync[7719da37-0124-4dc9-bf77-045c1226c6b3] succeeded in 0.009758812986547127s: 0 +2026-01-19 20:53:33 INFO celery.app.trace Task connecthub.dispatcher.tick[203d25f5-d84d-4ee4-88e0-878aedce5389] succeeded in 0.004347259004134685s: {'triggered': 0} +2026-01-19 20:54:33 INFO celery.app.trace Task connecthub.dispatcher.tick[957cbc82-d95a-48f8-93c3-ecd232094a4c] succeeded in 0.00775593300932087s: {'triggered': 0} +2026-01-19 20:55:33 INFO celery.app.trace Task connecthub.dispatcher.tick[398b52db-66a2-4f52-b214-e7586efc7ff2] succeeded in 0.0065654309873934835s: {'triggered': 0} +2026-01-19 20:56:33 INFO celery.app.trace Task connecthub.dispatcher.tick[eda21878-5aea-4211-818e-592e596d4d19] succeeded in 0.013246320013422519s: {'triggered': 0} +2026-01-19 20:57:33 INFO celery.app.trace Task connecthub.dispatcher.tick[a49e8ef6-d070-4578-ad33-d229a67ace48] succeeded in 0.01344557001721114s: {'triggered': 0} +2026-01-19 20:58:31 INFO celery.app.trace Task connecthub.ldap.sync[b19f5689-0bdb-4b9c-b5b3-f4253ddc813c] succeeded in 0.005660309019731358s: 0 +2026-01-19 20:58:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3001b251-67e5-4cd4-8865-2330e9adccbe] succeeded in 0.002693300019018352s: {'triggered': 0} +2026-01-19 20:59:33 INFO celery.app.trace Task connecthub.dispatcher.tick[579a3fff-1c57-47b0-94fd-a3cd783f6d87] succeeded in 0.012252443004399538s: {'triggered': 0} +2026-01-19 21:00:33 INFO celery.app.trace Task connecthub.dispatcher.tick[28a8adb5-e980-4a8d-b896-a651e3fa001b] succeeded in 0.003087510005570948s: {'triggered': 0} +2026-01-19 21:01:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b42086ea-d9cd-4004-8d46-791cb42eeedb] succeeded in 0.02031966802314855s: {'triggered': 0} +2026-01-19 21:02:33 INFO celery.app.trace Task connecthub.dispatcher.tick[4c954267-044b-4442-89bc-46e4f2321c4e] succeeded in 0.004316220001783222s: {'triggered': 0} +2026-01-19 21:03:31 INFO celery.app.trace Task connecthub.ldap.sync[9b7244b7-9ed1-4e9d-ba43-895d5c3a6513] succeeded in 0.011617866024607792s: 0 +2026-01-19 21:03:33 INFO celery.app.trace Task connecthub.dispatcher.tick[b41af261-9931-4c2f-9d8e-130711edc5ef] succeeded in 0.006597351020900533s: {'triggered': 0} +2026-01-19 21:04:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1f9e9f39-7a9d-4d26-9f7f-3bf9998bf79d] succeeded in 0.02354480401845649s: {'triggered': 0} +2026-01-19 21:05:33 INFO celery.app.trace Task connecthub.dispatcher.tick[028dc125-2e90-4eaa-8f00-1a954f1ab3c9] succeeded in 0.005199637002078816s: {'triggered': 0} +2026-01-19 21:06:33 INFO celery.app.trace Task connecthub.dispatcher.tick[3b33d4a8-8e14-4a61-8eba-63b43558ee8f] succeeded in 0.011515193007653579s: {'triggered': 0} +2026-01-19 21:07:33 INFO celery.app.trace Task connecthub.dispatcher.tick[bd9692f2-236b-4d09-9902-1db4e0b0fb10] succeeded in 0.008717479009646922s: {'triggered': 0} +2026-01-19 21:08:31 INFO celery.app.trace Task connecthub.ldap.sync[1442822f-b570-4a6b-a5aa-719c429e592f] succeeded in 0.007963265001308173s: 0 +2026-01-19 21:08:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9be0c213-bd88-43f2-b68e-7889273f6cdd] succeeded in 0.002972838992718607s: {'triggered': 0} +2026-01-19 21:09:33 INFO celery.app.trace Task connecthub.dispatcher.tick[80403333-0228-489b-9c79-16dbc1e160c5] succeeded in 0.003791799012105912s: {'triggered': 0} +2026-01-19 21:10:33 INFO celery.app.trace Task connecthub.dispatcher.tick[bd7574e2-95ad-4c1d-bc72-fad385b9bb7f] succeeded in 0.00470730199594982s: {'triggered': 0} +2026-01-19 21:11:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5cc2cb86-1897-49b3-8d8c-e0de0767cd5f] succeeded in 0.017828248004661873s: {'triggered': 0} +2026-01-19 21:12:33 INFO celery.app.trace Task connecthub.dispatcher.tick[21b2b78e-ea3e-4e57-aa1a-b3d226dd2887] succeeded in 0.0032348399981856346s: {'triggered': 0} +2026-01-19 21:13:31 INFO celery.app.trace Task connecthub.ldap.sync[6cf7ecde-291c-4534-b42a-46765d2d0719] succeeded in 0.009777520986972377s: 0 +2026-01-19 21:13:33 INFO celery.app.trace Task connecthub.dispatcher.tick[9460fe43-1ac1-444a-b7dd-5e2de6681239] succeeded in 0.004859468986978754s: {'triggered': 0} +2026-01-19 21:14:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c4dca676-64dd-47fd-ac6d-e4d8ac8610d8] succeeded in 0.011491274985019118s: {'triggered': 0} +2026-01-19 21:15:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7d50b853-79b6-48fa-b433-d0b2cbd2e018] succeeded in 0.002324837987544015s: {'triggered': 0} +2026-01-19 21:16:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5fe55461-df60-4065-b976-9294d52f9396] succeeded in 0.006900473003042862s: {'triggered': 0} +2026-01-19 21:17:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3b97c815-58fa-4c89-ac2d-9d8506e5132d] succeeded in 0.0043184669921174645s: {'triggered': 0} +2026-01-19 21:18:31 INFO celery.app.trace Task connecthub.ldap.sync[f90772ea-fd84-46f1-b17b-9614d4ffb51f] succeeded in 0.007072888984112069s: 0 +2026-01-19 21:18:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0047b784-f107-4b49-aeab-c9f21691386b] succeeded in 0.002963131992146373s: {'triggered': 0} +2026-01-19 21:19:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e1b59aea-95cd-4476-bd75-2e11dd8fa318] succeeded in 0.015210613986710086s: {'triggered': 0} +2026-01-19 21:20:34 INFO celery.app.trace Task connecthub.dispatcher.tick[683abd36-558b-4b51-aa45-6eef4ba3780b] succeeded in 0.006013637001160532s: {'triggered': 0} +2026-01-19 21:21:34 INFO celery.app.trace Task connecthub.dispatcher.tick[173de6ef-11cd-4fa9-9af4-7e3b8f93467e] succeeded in 0.012031608988763765s: {'triggered': 0} +2026-01-19 21:22:34 INFO celery.app.trace Task connecthub.dispatcher.tick[27a8de61-0d28-4ff7-aca1-4f1d7dd5ca43] succeeded in 0.004052966978633776s: {'triggered': 0} +2026-01-19 21:23:31 INFO celery.app.trace Task connecthub.ldap.sync[cf3f900f-deeb-42ce-9f6d-842ec3e3a07b] succeeded in 0.00797647499712184s: 0 +2026-01-19 21:23:34 INFO celery.app.trace Task connecthub.dispatcher.tick[19d408b2-cf00-48ae-bde5-6addf4cd1a70] succeeded in 0.004712760011898354s: {'triggered': 0} +2026-01-19 21:24:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9e259eb8-8cbd-4f70-8f58-02f8d652a3cd] succeeded in 0.011720190988853574s: {'triggered': 0} +2026-01-19 21:25:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e53775a4-720b-41b8-b0b5-3247ead69133] succeeded in 0.0033427579910494387s: {'triggered': 0} +2026-01-19 21:26:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a486092e-c992-48fa-aa20-33878fbea373] succeeded in 0.010452272981638089s: {'triggered': 0} +2026-01-19 21:27:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1b333299-f862-4bae-9742-028d9f75fff7] succeeded in 0.008115142991300672s: {'triggered': 0} +2026-01-19 21:28:31 INFO celery.app.trace Task connecthub.ldap.sync[766b03ad-ac26-41bf-ac8b-f034e00e8859] succeeded in 0.0076031420030631125s: 0 +2026-01-19 21:28:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f29efe82-6674-47ed-9d5d-144f59e3edc3] succeeded in 0.011232274991925806s: {'triggered': 0} +2026-01-19 21:29:34 INFO celery.app.trace Task connecthub.dispatcher.tick[888d491f-e9f4-48ee-b833-c13a82a2c9f2] succeeded in 0.006439514021622017s: {'triggered': 0} +2026-01-19 21:30:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1094276a-61a7-4fe7-83ce-1acca9ac431c] succeeded in 0.015721659001428634s: {'triggered': 0} +2026-01-19 21:31:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f18c7ce8-0564-46b9-bf62-1ab9eeaece09] succeeded in 0.010509730986086652s: {'triggered': 0} +2026-01-19 21:32:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b0bf44fb-2521-40fc-8da2-f1e622e79719] succeeded in 0.007648183993296698s: {'triggered': 0} +2026-01-19 21:33:31 INFO celery.app.trace Task connecthub.ldap.sync[7175edc9-e6f8-41a2-b9e5-c2356a943b73] succeeded in 0.020721378998132423s: 0 +2026-01-19 21:33:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2d32f6ea-9ec6-4f0d-9d6e-531bffec3de4] succeeded in 0.004612301010638475s: {'triggered': 0} +2026-01-19 21:34:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4f2f9985-e8cb-495c-81a8-e8dcc2d84c0d] succeeded in 0.0060413489991333336s: {'triggered': 0} +2026-01-19 21:35:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e609eb77-7b75-4d73-b551-375c3e1ff9e2] succeeded in 0.013686153979506344s: {'triggered': 0} +2026-01-19 21:36:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7b8be05c-aba7-46fe-bd4c-083de6200ef6] succeeded in 0.005160182015970349s: {'triggered': 0} +2026-01-19 21:37:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a36bac92-d6b8-4747-85e3-a762cd14e5da] succeeded in 0.0037782170111313462s: {'triggered': 0} +2026-01-19 21:38:31 INFO celery.app.trace Task connecthub.ldap.sync[ccd43b07-cf91-42f4-b700-65ed20ff5c2d] succeeded in 0.020049471000675112s: 0 +2026-01-19 21:38:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b7320289-362b-4dc8-b957-4e8d08fdf193] succeeded in 0.007211852993350476s: {'triggered': 0} +2026-01-19 21:39:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3d57ba52-7aa8-4dc5-86b4-dc9762f610d6] succeeded in 0.006142099999124184s: {'triggered': 0} +2026-01-19 21:40:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8f276b44-cb1b-4cf2-8eb9-86b60c6badee] succeeded in 0.00852539500920102s: {'triggered': 0} +2026-01-19 21:41:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4ce93531-76c8-401e-9e79-15dbeca0228f] succeeded in 0.0067199739860370755s: {'triggered': 0} +2026-01-19 21:42:34 INFO celery.app.trace Task connecthub.dispatcher.tick[bf1262d7-8c4e-4cd4-af8d-2e840fd9f6df] succeeded in 0.006291305006016046s: {'triggered': 0} +2026-01-19 21:43:31 INFO celery.app.trace Task connecthub.ldap.sync[6edb25b3-16bb-4e3b-9bf3-90f6e6607340] succeeded in 0.015221367008052766s: 0 +2026-01-19 21:43:34 INFO celery.app.trace Task connecthub.dispatcher.tick[01a9cf73-7b9f-4b34-8b34-2597e6eb947c] succeeded in 0.006277431006310508s: {'triggered': 0} +2026-01-19 21:44:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b3fbd8cd-ab61-41fa-8006-5ddee204a847] succeeded in 0.008559436013456434s: {'triggered': 0} +2026-01-19 21:45:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d9481fbe-c216-4c59-8a5b-edde888f8cc8] succeeded in 0.006534388987347484s: {'triggered': 0} +2026-01-19 21:46:34 INFO celery.app.trace Task connecthub.dispatcher.tick[08d82a0c-b3d6-4d2e-9d75-cebbacab3213] succeeded in 0.013331905007362366s: {'triggered': 0} +2026-01-19 21:47:34 INFO celery.app.trace Task connecthub.dispatcher.tick[48bd2dbe-8232-46f1-b7cc-912df1cd78b7] succeeded in 0.00842235199525021s: {'triggered': 0} +2026-01-19 21:48:31 INFO celery.app.trace Task connecthub.ldap.sync[87dd39ab-063e-4acd-b8fe-5810dc496c74] succeeded in 0.003858007985400036s: 0 +2026-01-19 21:48:34 INFO celery.app.trace Task connecthub.dispatcher.tick[874afbba-1a1a-4e4c-8b3f-be09d0bf4c6c] succeeded in 0.005943762982496992s: {'triggered': 0} +2026-01-19 21:49:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b52c4fe6-0992-4bac-9f13-33c3b1065fa6] succeeded in 0.01163569200434722s: {'triggered': 0} +2026-01-19 21:50:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4bf61115-145f-4040-a9f1-d04e38384ccd] succeeded in 0.01086777399177663s: {'triggered': 0} +2026-01-19 21:51:34 INFO celery.app.trace Task connecthub.dispatcher.tick[54218b68-7111-4669-9111-e98e6bdf924b] succeeded in 0.005650136998156086s: {'triggered': 0} +2026-01-19 21:52:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c5483c72-264e-49f1-ba22-36cb585e4d3f] succeeded in 0.006790640007238835s: {'triggered': 0} +2026-01-19 21:53:31 INFO celery.app.trace Task connecthub.ldap.sync[229e6628-7406-4209-91e6-2925b8352f38] succeeded in 0.019322293024742976s: 0 +2026-01-19 21:53:34 INFO celery.app.trace Task connecthub.dispatcher.tick[091e5ee3-41d2-41ea-a21f-508f23f1533e] succeeded in 0.00576626299880445s: {'triggered': 0} +2026-01-19 21:54:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4399561a-1cb2-474d-8e85-f6f2795a24de] succeeded in 0.0039037580136209726s: {'triggered': 0} +2026-01-19 21:55:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d1765a66-cc65-4a19-963d-73617ebdbed8] succeeded in 0.005404928990174085s: {'triggered': 0} +2026-01-19 21:56:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fa7b7b29-9a55-4f54-b1d3-c6b3c23317c5] succeeded in 0.014492240006802604s: {'triggered': 0} +2026-01-19 21:57:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1ae3dc20-6ffe-4beb-8492-03711b5b0d0d] succeeded in 0.004588302021147683s: {'triggered': 0} +2026-01-19 21:58:31 INFO celery.app.trace Task connecthub.ldap.sync[825b388b-0e06-4c13-b669-c87ce32f1d04] succeeded in 0.011366442020516843s: 0 +2026-01-19 21:58:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0ce4cec6-8280-460d-85b6-301c4e3888de] succeeded in 0.006780224008252844s: {'triggered': 0} +2026-01-19 21:59:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2fee5bb2-5931-4522-84f6-bc25eeaa51e7] succeeded in 0.0044343009940348566s: {'triggered': 0} +2026-01-19 22:00:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fa1d4f22-b89c-4b3d-967c-a08a6ba9f94c] succeeded in 0.015120700001716614s: {'triggered': 0} +2026-01-19 22:01:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1016d580-2938-42e8-9a2d-7f6127ba1798] succeeded in 0.00481234400649555s: {'triggered': 0} +2026-01-19 22:02:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f7aed27b-535e-4e96-93a7-c9e9815632fa] succeeded in 0.008141935017192736s: {'triggered': 0} +2026-01-19 22:03:31 INFO celery.app.trace Task connecthub.ldap.sync[4a6e1c4d-f5c3-463b-a23d-4ea9111d15d3] succeeded in 0.01377173900255002s: 0 +2026-01-19 22:03:34 INFO celery.app.trace Task connecthub.dispatcher.tick[93ecd0e0-ef07-4a8d-bd9e-fc27d1ef055d] succeeded in 0.004748301988001913s: {'triggered': 0} +2026-01-19 22:04:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e3c2426a-ca62-4859-8f29-4ef54c589639] succeeded in 0.005202386993914843s: {'triggered': 0} +2026-01-19 22:05:34 INFO celery.app.trace Task connecthub.dispatcher.tick[48623506-83a0-4de4-b2a0-641ace6a44b0] succeeded in 0.010607689997414127s: {'triggered': 0} +2026-01-19 22:06:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b7744f31-cf6a-4add-9abd-d41b645aee27] succeeded in 0.006518515001516789s: {'triggered': 0} +2026-01-19 22:07:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9d534b11-f24f-4f0b-b57a-22f7ed46f5e7] succeeded in 0.007579141994938254s: {'triggered': 0} +2026-01-19 22:08:31 INFO celery.app.trace Task connecthub.ldap.sync[5d9718e6-b9ac-48e5-afae-f20bacf028ec] succeeded in 0.006216263980604708s: 0 +2026-01-19 22:08:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6ae1768a-4c3b-4a0b-ae96-88d46c637785] succeeded in 0.0028431730170268565s: {'triggered': 0} +2026-01-19 22:09:34 INFO celery.app.trace Task connecthub.dispatcher.tick[ebc0094c-8347-4ce3-844f-9b1012134ba8] succeeded in 0.0026212969969492406s: {'triggered': 0} +2026-01-19 22:10:34 INFO celery.app.trace Task connecthub.dispatcher.tick[32881cb9-eed1-4361-9f08-c139bf755b4e] succeeded in 0.0036129670043010265s: {'triggered': 0} +2026-01-19 22:11:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7b9947a6-d0b6-4672-bf28-3d2e737f8954] succeeded in 0.011036648997105658s: {'triggered': 0} +2026-01-19 22:12:34 INFO celery.app.trace Task connecthub.dispatcher.tick[88ee08d6-cabd-4f9e-9261-d65b75e981c1] succeeded in 0.003452965000178665s: {'triggered': 0} +2026-01-19 22:13:31 INFO celery.app.trace Task connecthub.ldap.sync[61614e4c-500d-4d1f-9384-66183360766b] succeeded in 0.007747641997411847s: 0 +2026-01-19 22:13:34 INFO celery.app.trace Task connecthub.dispatcher.tick[bd097be3-5dce-4cc0-9467-6d149782823b] succeeded in 0.0031586739933118224s: {'triggered': 0} +2026-01-19 22:14:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9984a056-b32e-424f-a485-13021790a54a] succeeded in 0.005775845987955108s: {'triggered': 0} +2026-01-19 22:15:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0efb8833-34e2-4e57-b8da-d5afcb007816] succeeded in 0.0041660930146463215s: {'triggered': 0} +2026-01-19 22:16:34 INFO celery.app.trace Task connecthub.dispatcher.tick[dbbab1fd-bf40-461e-91a3-762ce5a59616] succeeded in 0.004277051019016653s: {'triggered': 0} +2026-01-19 22:17:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a5cd3c6e-6c3b-475d-9a7b-c641001d36ae] succeeded in 0.00871172800543718s: {'triggered': 0} +2026-01-19 22:18:31 INFO celery.app.trace Task connecthub.ldap.sync[f060cb44-4123-4d37-9f89-816f89430ff7] succeeded in 0.005658387002767995s: 0 +2026-01-19 22:18:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b752f4ee-b3de-4570-8c97-8ec6780ec9ce] succeeded in 0.0036400490207597613s: {'triggered': 0} +2026-01-19 22:19:34 INFO celery.app.trace Task connecthub.dispatcher.tick[28572a69-4d7f-4380-91ec-38367fee3a8b] succeeded in 0.018343789997743443s: {'triggered': 0} +2026-01-19 22:20:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8c650bd8-8abf-4c96-84cc-1507c94a2496] succeeded in 0.00674501497996971s: {'triggered': 0} +2026-01-19 22:21:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0baac691-1e98-432d-aca2-d25fbdcf09da] succeeded in 0.030498776002787054s: {'triggered': 0} +2026-01-19 22:22:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fef09208-c313-4bcc-87a8-7bcb10b83005] succeeded in 0.0043973430001642555s: {'triggered': 0} +2026-01-19 22:23:31 INFO celery.app.trace Task connecthub.ldap.sync[b43ad1d9-5b77-4392-a9e8-11e37d489a7e] succeeded in 0.006978931982303038s: 0 +2026-01-19 22:23:34 INFO celery.app.trace Task connecthub.dispatcher.tick[42666acc-db1f-46d9-a5ec-ae3c2b9488f1] succeeded in 0.00348925800062716s: {'triggered': 0} +2026-01-19 22:24:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7c97a764-ceab-49d2-a5a7-d3bccc0dea1c] succeeded in 0.011537899990798905s: {'triggered': 0} +2026-01-19 22:25:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f0c45c3d-064a-4ec1-add5-ae931af81e9e] succeeded in 0.01629174200934358s: {'triggered': 0} +2026-01-19 22:26:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fe06b7cd-3def-441d-8b2b-fc3a73ad1a5c] succeeded in 0.007115889980923384s: {'triggered': 0} +2026-01-19 22:27:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d0518328-b4f6-4e9b-9963-4a5e132875c1] succeeded in 0.01885008197859861s: {'triggered': 0} +2026-01-19 22:28:31 INFO celery.app.trace Task connecthub.ldap.sync[2dd2d2b8-aad4-4e6a-8cda-23c214b8bdc0] succeeded in 0.02936285498435609s: 0 +2026-01-19 22:28:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9044b8a3-b34f-45f0-92d3-c3702a25356b] succeeded in 0.0039442169945687056s: {'triggered': 0} +2026-01-19 22:29:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1f0c83b1-aa58-40e5-8c0e-0eadc68497d6] succeeded in 0.007869267021305859s: {'triggered': 0} +2026-01-19 22:30:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e449d5ae-dc0e-4c08-8741-b150943f3048] succeeded in 0.02084796200506389s: {'triggered': 0} +2026-01-19 22:31:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a5706994-dcc5-4171-93c3-4dd7d88b49d6] succeeded in 0.01741637199302204s: {'triggered': 0} +2026-01-19 22:32:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5ca0c1b8-e0ac-4428-9ed5-eab7a5bad2a0] succeeded in 0.004917593993013725s: {'triggered': 0} +2026-01-19 22:33:31 INFO celery.app.trace Task connecthub.ldap.sync[2f10bd8c-898c-4c2f-904c-04bbdbb83539] succeeded in 0.009880188998067752s: 0 +2026-01-19 22:33:34 INFO celery.app.trace Task connecthub.dispatcher.tick[cb5a633e-9794-44e0-a09f-c472ff9c2209] succeeded in 0.0043940930045209825s: {'triggered': 0} +2026-01-19 22:34:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4ddb7ecc-06d9-4f30-a582-d527ec3ce58c] succeeded in 0.0033149239898193628s: {'triggered': 0} +2026-01-19 22:35:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5820a61f-dbc1-4bd4-bbbb-2548624d6c29] succeeded in 0.01453069900162518s: {'triggered': 0} +2026-01-19 22:36:34 INFO celery.app.trace Task connecthub.dispatcher.tick[693f39e6-f4ff-4d78-aea2-a6e0a7bb4210] succeeded in 0.0096136890060734s: {'triggered': 0} +2026-01-19 22:37:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7881636f-8bee-464e-bfb1-5870a5c154c3] succeeded in 0.0041030510037671775s: {'triggered': 0} +2026-01-19 22:38:31 INFO celery.app.trace Task connecthub.ldap.sync[09f42793-5eb7-4347-a096-7c42077aa658] succeeded in 0.013671572000021115s: 0 +2026-01-19 22:38:34 INFO celery.app.trace Task connecthub.dispatcher.tick[cc60a520-1ff8-46b3-a617-25b85cbaf977] succeeded in 0.007008765998762101s: {'triggered': 0} +2026-01-19 22:39:34 INFO celery.app.trace Task connecthub.dispatcher.tick[711ad194-315d-41b9-8397-2064d145558a] succeeded in 0.004591301025357097s: {'triggered': 0} +2026-01-19 22:40:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0f418677-4680-4279-9d37-292641bf2f6e] succeeded in 0.0036955910036340356s: {'triggered': 0} +2026-01-19 22:41:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1cd39ed8-5fe9-487e-b1b3-72f324d93ca1] succeeded in 0.010502606019144878s: {'triggered': 0} +2026-01-19 22:42:34 INFO celery.app.trace Task connecthub.dispatcher.tick[941b3d54-e7f2-4c81-a175-592c97d6270a] succeeded in 0.006004347000271082s: {'triggered': 0} +2026-01-19 22:43:31 INFO celery.app.trace Task connecthub.ldap.sync[76975eab-f118-4978-8919-f7b721abe630] succeeded in 0.010266105993650854s: 0 +2026-01-19 22:43:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5c8de723-b4cc-4501-bfda-475b4bcc0925] succeeded in 0.0029620899877045304s: {'triggered': 0} +2026-01-19 22:44:34 INFO celery.app.trace Task connecthub.dispatcher.tick[08aef0ff-0d6b-4e47-b84b-fb153951fbc2] succeeded in 0.011954692017752677s: {'triggered': 0} +2026-01-19 22:45:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0becf9d1-235f-4be9-bba8-23f9c3b02552] succeeded in 0.009445061994483694s: {'triggered': 0} +2026-01-19 22:46:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b7023ae5-4af9-417f-905f-3635da34c7c2] succeeded in 0.002749381004832685s: {'triggered': 0} +2026-01-19 22:47:34 INFO celery.app.trace Task connecthub.dispatcher.tick[357affdc-1696-4f71-b651-2ed5839f3963] succeeded in 0.002989839995279908s: {'triggered': 0} +2026-01-19 22:48:31 INFO celery.app.trace Task connecthub.ldap.sync[9345565d-dca7-490e-aeb5-689fd8da2d70] succeeded in 0.02809660299681127s: 0 +2026-01-19 22:48:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d4526a27-5dfc-4873-b6a2-7fbd004e6a53] succeeded in 0.00644668098539114s: {'triggered': 0} +2026-01-19 22:49:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1b80e101-1951-4ee8-9b67-21bf9aff8017] succeeded in 0.005894138012081385s: {'triggered': 0} +2026-01-19 22:50:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d0da17ce-f96f-414a-ba56-a47fd849bb73] succeeded in 0.008046685019508004s: {'triggered': 0} +2026-01-19 22:51:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5d7c1ef4-fa35-4a89-a66e-e143c0f850c3] succeeded in 0.0070200150075834244s: {'triggered': 0} +2026-01-19 22:52:34 INFO celery.app.trace Task connecthub.dispatcher.tick[497f9019-89d1-407c-8dba-fe03bc2e4a4a] succeeded in 0.005034594010794535s: {'triggered': 0} +2026-01-19 22:53:31 INFO celery.app.trace Task connecthub.ldap.sync[05184c99-a808-45e3-9642-ba49d42ad7c0] succeeded in 0.01600191098987125s: 0 +2026-01-19 22:53:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e8f1b5d9-a8ba-41e9-96e0-d811815fd5bd] succeeded in 0.006543472991324961s: {'triggered': 0} +2026-01-19 22:54:34 INFO celery.app.trace Task connecthub.dispatcher.tick[68c443c3-d940-4f8e-b5f3-359a786efe00] succeeded in 0.005086302990093827s: {'triggered': 0} +2026-01-19 22:55:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d1929857-61a4-414c-bc5a-df007d769238] succeeded in 0.0035101749817840755s: {'triggered': 0} +2026-01-19 22:56:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3616501e-1198-494d-9dbb-4a32f79320ef] succeeded in 0.018063832016196102s: {'triggered': 0} +2026-01-19 22:57:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2e2cc4b4-b6c7-4559-9c5b-73bcbe5e2f66] succeeded in 0.007534809003118426s: {'triggered': 0} +2026-01-19 22:58:31 INFO celery.app.trace Task connecthub.ldap.sync[ed0504ce-d03e-4a9a-9059-89367fab400d] succeeded in 0.005565847008256242s: 0 +2026-01-19 22:58:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3c4b2921-4a21-41c1-93f7-ea0e18640c5b] succeeded in 0.005794764001620933s: {'triggered': 0} +2026-01-19 22:59:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7f2b6094-46ab-405a-8a23-21c1d6ae4266] succeeded in 0.01721437298692763s: {'triggered': 0} +2026-01-19 23:00:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4406ef12-fbb0-4dbe-a50b-7909e23b0215] succeeded in 0.007221682986710221s: {'triggered': 0} +2026-01-19 23:01:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6b9e6fde-cd07-4cda-9099-c1f0521064b1] succeeded in 0.020804255007533357s: {'triggered': 0} +2026-01-19 23:02:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fab4d704-2198-449a-a353-7d97607028ae] succeeded in 0.00354909201269038s: {'triggered': 0} +2026-01-19 23:03:31 INFO celery.app.trace Task connecthub.ldap.sync[e8bae1d4-1bfd-4995-bff7-37f0a42cc942] succeeded in 0.006549431011080742s: 0 +2026-01-19 23:03:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5f418950-1326-4a49-b098-cb2f6ec748ec] succeeded in 0.00524659501388669s: {'triggered': 0} +2026-01-19 23:04:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1bb02558-2509-47b0-9821-5abb329a881d] succeeded in 0.001745337009197101s: {'triggered': 0} +2026-01-19 23:05:34 INFO celery.app.trace Task connecthub.dispatcher.tick[900251a7-cbad-46f6-989f-742d03d0b708] succeeded in 0.004219926020596176s: {'triggered': 0} +2026-01-19 23:06:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e3c35f9c-c771-4950-bf4c-c1645aa72cd9] succeeded in 0.008174560003681108s: {'triggered': 0} +2026-01-19 23:07:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0e29c3d0-c2e3-4b6d-a983-abbf6e8c99c7] succeeded in 0.004242300987243652s: {'triggered': 0} +2026-01-19 23:08:31 INFO celery.app.trace Task connecthub.ldap.sync[d2134184-834d-4011-89ec-7dd5bef20c81] succeeded in 0.007645058998605236s: 0 +2026-01-19 23:08:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f39b773e-cd92-4230-9f85-d9a65165d705] succeeded in 0.004245552001520991s: {'triggered': 0} +2026-01-19 23:09:34 INFO celery.app.trace Task connecthub.dispatcher.tick[72c5aa37-5a1d-478e-bc04-dd1773da1df5] succeeded in 0.006019430002197623s: {'triggered': 0} +2026-01-19 23:10:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0b09ee9a-9d61-4bda-8bc3-93820153d449] succeeded in 0.007932808977784589s: {'triggered': 0} +2026-01-19 23:11:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8e84f4e4-107b-4ef5-9816-b82c1bc7fbe5] succeeded in 0.004393551003886387s: {'triggered': 0} +2026-01-19 23:12:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e817fc88-50a4-4f93-b615-38f6bf87da7f] succeeded in 0.006831056991359219s: {'triggered': 0} +2026-01-19 23:13:31 INFO celery.app.trace Task connecthub.ldap.sync[5273c0ad-ad05-404b-909e-1ddf28fa258d] succeeded in 0.009601438010577112s: 0 +2026-01-19 23:13:34 INFO celery.app.trace Task connecthub.dispatcher.tick[56617b64-c7a8-4bc0-a810-c772d637ef61] succeeded in 0.0029407979745883495s: {'triggered': 0} +2026-01-19 23:14:34 INFO celery.app.trace Task connecthub.dispatcher.tick[43988d01-1adb-4dd4-af60-c0eaf0efbc83] succeeded in 0.006306362018221989s: {'triggered': 0} +2026-01-19 23:15:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e1826d83-a4b3-48f8-9a25-d58f67794375] succeeded in 0.005850661022122949s: {'triggered': 0} +2026-01-19 23:16:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3216953c-d690-4d55-9ecb-1736746d008a] succeeded in 0.006669613008853048s: {'triggered': 0} +2026-01-19 23:17:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d6328b73-ebe2-4988-8849-5ae4b0d4ec88] succeeded in 0.00441388098988682s: {'triggered': 0} +2026-01-19 23:18:31 INFO celery.app.trace Task connecthub.ldap.sync[079835d6-d70b-45a4-89cf-c24c80524b30] succeeded in 0.009327057981863618s: 0 +2026-01-19 23:18:34 INFO celery.app.trace Task connecthub.dispatcher.tick[19061744-26eb-44e0-958d-4973fcbcc6ec] succeeded in 0.002989825006807223s: {'triggered': 0} +2026-01-19 23:19:34 INFO celery.app.trace Task connecthub.dispatcher.tick[705fa7e8-4890-436e-a73f-227b6128479b] succeeded in 0.004820029018446803s: {'triggered': 0} +2026-01-19 23:20:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e506026d-0f13-4708-b950-4f6a57538479] succeeded in 0.01629199701710604s: {'triggered': 0} +2026-01-19 23:21:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7bb4db77-b66d-4fac-8212-75c4a7c65e4b] succeeded in 0.007705126976361498s: {'triggered': 0} +2026-01-19 23:22:34 INFO celery.app.trace Task connecthub.dispatcher.tick[95213261-c764-47d7-89b5-2764d76995bd] succeeded in 0.002636792982229963s: {'triggered': 0} +2026-01-19 23:23:31 INFO celery.app.trace Task connecthub.ldap.sync[b648fc53-921b-4464-ab3b-f5f8926ef744] succeeded in 0.00876139200408943s: 0 +2026-01-19 23:23:34 INFO celery.app.trace Task connecthub.dispatcher.tick[43958a5a-e26f-41a4-bc86-3b405a89698a] succeeded in 0.004051300027640536s: {'triggered': 0} +2026-01-19 23:24:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7ed018f3-4ca2-4267-8afc-db2c446bb7a9] succeeded in 0.008344016008777544s: {'triggered': 0} +2026-01-19 23:25:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1985c20d-38f0-44d9-8e56-f5fbf3e5e8cd] succeeded in 0.0035042979870922863s: {'triggered': 0} +2026-01-19 23:26:34 INFO celery.app.trace Task connecthub.dispatcher.tick[085603d0-5b70-4f15-a590-d5b031b09368] succeeded in 0.003642255993327126s: {'triggered': 0} +2026-01-19 23:27:34 INFO celery.app.trace Task connecthub.dispatcher.tick[297a4a2f-3821-4a88-80d0-44cf434b7ce6] succeeded in 0.010476060007931665s: {'triggered': 0} +2026-01-19 23:28:31 INFO celery.app.trace Task connecthub.ldap.sync[e2ee71c0-aad0-411b-b826-31d6abcdc279] succeeded in 0.006314386002486572s: 0 +2026-01-19 23:28:34 INFO celery.app.trace Task connecthub.dispatcher.tick[be01715a-4950-4fba-889d-7c9c60fffb1f] succeeded in 0.00397596598486416s: {'triggered': 0} +2026-01-19 23:29:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9c41aa53-12d2-4ad0-bd79-65cae6b5d4b8] succeeded in 0.023900500003946945s: {'triggered': 0} +2026-01-19 23:30:34 INFO celery.app.trace Task connecthub.dispatcher.tick[09bc7f49-cfcb-497e-a642-42d009a2cf4d] succeeded in 0.005723301990656182s: {'triggered': 0} +2026-01-19 23:31:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a37aa50f-dcb0-43db-b0cb-3c51540c4f45] succeeded in 0.00994943399564363s: {'triggered': 0} +2026-01-19 23:32:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2abc2e23-0481-4eeb-9ec4-01e85096b8d1] succeeded in 0.005177676008315757s: {'triggered': 0} +2026-01-19 23:33:31 INFO celery.app.trace Task connecthub.ldap.sync[a21aef96-61a0-40a0-aa37-12aa156bc9f2] succeeded in 0.0064072610111907125s: 0 +2026-01-19 23:33:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d8bb43c4-76ca-4212-8ae8-6afcfd108bd8] succeeded in 0.003160171996569261s: {'triggered': 0} +2026-01-19 23:34:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d7086615-51dc-4b1c-aee0-748fa8cdd55e] succeeded in 0.012222063000081107s: {'triggered': 0} +2026-01-19 23:35:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fe652867-f039-4dea-aba3-bfc4396d1318] succeeded in 0.006383885978721082s: {'triggered': 0} +2026-01-19 23:36:34 INFO celery.app.trace Task connecthub.dispatcher.tick[22bac5bc-77db-49dc-a590-7bddd9e8725c] succeeded in 0.006676428020000458s: {'triggered': 0} +2026-01-19 23:37:34 INFO celery.app.trace Task connecthub.dispatcher.tick[349fff5b-84c6-44b1-9835-e19d992c9103] succeeded in 0.03715923201525584s: {'triggered': 0} +2026-01-19 23:38:31 INFO celery.app.trace Task connecthub.ldap.sync[6394efb6-dd81-4e80-afae-5633a8a50e7e] succeeded in 0.003611422987887636s: 0 +2026-01-19 23:38:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a6b1d334-0fea-4070-9201-ed872350b565] succeeded in 0.004012340010376647s: {'triggered': 0} +2026-01-19 23:39:34 INFO celery.app.trace Task connecthub.dispatcher.tick[60abf526-895e-4388-8d64-5988aa341948] succeeded in 0.012252271990291774s: {'triggered': 0} +2026-01-19 23:40:34 INFO celery.app.trace Task connecthub.dispatcher.tick[55cf2c5d-596d-483f-8701-30d54ab47b70] succeeded in 0.005511342984391376s: {'triggered': 0} +2026-01-19 23:41:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d9040f2b-c7c1-4c38-9ef1-08b98fd2fe0e] succeeded in 0.018642199982423335s: {'triggered': 0} +2026-01-19 23:42:34 INFO celery.app.trace Task connecthub.dispatcher.tick[328e05fe-de61-4a29-9e3e-017e12781a38] succeeded in 0.007657178997760639s: {'triggered': 0} +2026-01-19 23:43:31 INFO celery.app.trace Task connecthub.ldap.sync[3be9bf25-766a-453e-8b3d-ada75a926dfc] succeeded in 0.00883609801530838s: 0 +2026-01-19 23:43:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6a22a2f6-3a88-4495-a7c7-4a73f829bff2] succeeded in 0.004326882975874469s: {'triggered': 0} +2026-01-19 23:44:34 INFO celery.app.trace Task connecthub.dispatcher.tick[79078088-56e0-4665-842e-46d5fc8a27df] succeeded in 0.003418673004489392s: {'triggered': 0} +2026-01-19 23:45:34 INFO celery.app.trace Task connecthub.dispatcher.tick[bae40805-9ec0-4070-9164-781a6f25e789] succeeded in 0.012973062985111028s: {'triggered': 0} +2026-01-19 23:46:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2ed31a19-eb1b-4aaa-83a0-87e7bd60c10e] succeeded in 0.006326555012492463s: {'triggered': 0} +2026-01-19 23:47:34 INFO celery.app.trace Task connecthub.dispatcher.tick[390d3cb1-1441-4f3a-b828-e879f95e6db6] succeeded in 0.012195278017316014s: {'triggered': 0} +2026-01-19 23:48:32 INFO celery.app.trace Task connecthub.ldap.sync[3c902ff2-ff99-400d-b4c2-a7dbd0c81a14] succeeded in 0.003954951011110097s: 0 +2026-01-19 23:48:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f1fa9445-33d8-4a4e-a0d2-2d82a3be2642] succeeded in 0.002617369988001883s: {'triggered': 0} +2026-01-19 23:49:34 INFO celery.app.trace Task connecthub.dispatcher.tick[00dd797d-d2cc-4fdf-88cb-7e6f2496e4ad] succeeded in 0.005341281997971237s: {'triggered': 0} +2026-01-19 23:50:34 INFO celery.app.trace Task connecthub.dispatcher.tick[19fb7e7b-b5ee-45c1-9858-b800023c5af9] succeeded in 0.0035762909974437207s: {'triggered': 0} +2026-01-19 23:51:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8b7311bf-017e-4445-8aad-6720cb772bbf] succeeded in 0.0216476260102354s: {'triggered': 0} +2026-01-19 23:52:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6a41de40-419c-47e8-a665-63c7ffb49dfb] succeeded in 0.005525582993868738s: {'triggered': 0} +2026-01-19 23:53:32 INFO celery.app.trace Task connecthub.ldap.sync[2ce8866a-eb78-4f62-9e34-e872650e1b78] succeeded in 0.005970672995317727s: 0 +2026-01-19 23:53:34 INFO celery.app.trace Task connecthub.dispatcher.tick[99907b4e-0d2f-4fe9-9578-99ba52e43921] succeeded in 0.004115879011806101s: {'triggered': 0} +2026-01-19 23:54:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4ced6c67-6b82-4ab7-87ed-bfebbc99c963] succeeded in 0.007972758990945294s: {'triggered': 0} +2026-01-19 23:55:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8c3389b8-0121-4167-825f-8cf397ba000f] succeeded in 0.007484303991077468s: {'triggered': 0} +2026-01-19 23:56:34 INFO celery.app.trace Task connecthub.dispatcher.tick[06794e05-f95c-43d0-ba74-89b00fd04e93] succeeded in 0.006720720004523173s: {'triggered': 0} +2026-01-19 23:57:34 INFO celery.app.trace Task connecthub.dispatcher.tick[43f8080b-4e22-4958-9bd0-9d1ae1e4bd57] succeeded in 0.009119305992498994s: {'triggered': 0} +2026-01-19 23:58:32 INFO celery.app.trace Task connecthub.ldap.sync[1359a1f4-f96b-46d2-85fd-19e5ee3cf4cd] succeeded in 0.0066226769995409995s: 0 +2026-01-19 23:58:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6623b7f2-db43-497b-92b7-5ef9c6f69222] succeeded in 0.0029180049896240234s: {'triggered': 0} +2026-01-19 23:59:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c5439550-1e6f-4a45-bd15-65dfc331256e] succeeded in 0.010861975024454296s: {'triggered': 0} +2026-01-20 00:00:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fa53d516-7017-4a8b-b33e-cea95c9f9249] succeeded in 0.006800094997743145s: {'triggered': 0} +2026-01-20 00:01:34 INFO celery.app.trace Task connecthub.dispatcher.tick[21f75517-4535-45f9-8e0c-6844bdfa8683] succeeded in 0.008904835005523637s: {'triggered': 0} +2026-01-20 00:02:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a1ccf5dd-998c-4daa-98ff-2d414aa7cf6b] succeeded in 0.0037281849945429713s: {'triggered': 0} +2026-01-20 00:03:32 INFO celery.app.trace Task connecthub.ldap.sync[df3fbf0d-1b4f-4f85-a45a-0bd6783ed03c] succeeded in 0.008896408980945125s: 0 +2026-01-20 00:03:34 INFO celery.app.trace Task connecthub.dispatcher.tick[556b1bc9-d632-49b1-bf94-a516d01459ee] succeeded in 0.002910843992140144s: {'triggered': 0} +2026-01-20 00:04:34 INFO celery.app.trace Task connecthub.dispatcher.tick[560d8ed9-f27b-4832-99da-550ba565ddd9] succeeded in 0.0013559630024246871s: {'triggered': 0} +2026-01-20 00:05:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8ddb8b77-8030-4ca7-b8b5-b55c4a515f19] succeeded in 0.00942969199968502s: {'triggered': 0} +2026-01-20 00:06:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b1d2a836-9f7a-46ff-95dc-05168278d24b] succeeded in 0.0051965560123790056s: {'triggered': 0} +2026-01-20 00:07:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3a70d4da-e6e0-4b97-9479-74c18d1a6b03] succeeded in 0.00350930099375546s: {'triggered': 0} +2026-01-20 00:08:32 INFO celery.app.trace Task connecthub.ldap.sync[58f18b80-4811-45bb-9f41-c2ada98a66c0] succeeded in 0.01023010301287286s: 0 +2026-01-20 00:08:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8605c760-a18d-4865-b4f3-c0033e5cc71e] succeeded in 0.0056304699974134564s: {'triggered': 0} +2026-01-20 00:09:34 INFO celery.app.trace Task connecthub.dispatcher.tick[aa9c13ce-6538-4c73-af9c-d101ab599b8f] succeeded in 0.007681681017857045s: {'triggered': 0} +2026-01-20 00:10:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2c488cb0-9853-4f58-8903-12b055238ed5] succeeded in 0.00783622098970227s: {'triggered': 0} +2026-01-20 00:11:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1eb4cd7f-6bf5-464a-af97-6321483ba601] succeeded in 0.003193089010892436s: {'triggered': 0} +2026-01-20 00:12:34 INFO celery.app.trace Task connecthub.dispatcher.tick[41eb6f89-fa87-429c-911b-785346fa7b74] succeeded in 0.0062345939804799855s: {'triggered': 0} +2026-01-20 00:13:32 INFO celery.app.trace Task connecthub.ldap.sync[dbf5d930-2058-42d8-8cfd-9572cbd263e8] succeeded in 0.009957934002159163s: 0 +2026-01-20 00:13:34 INFO celery.app.trace Task connecthub.dispatcher.tick[959adb1b-e586-4c6c-897d-a1eb2c54cba1] succeeded in 0.003382046998012811s: {'triggered': 0} +2026-01-20 00:14:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a8dbcd52-4f13-4fff-8998-e229e6edee91] succeeded in 0.003414922015508637s: {'triggered': 0} +2026-01-20 00:15:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e8eca2d7-7e3f-4d90-9637-71337ca65318] succeeded in 0.006234886008314788s: {'triggered': 0} +2026-01-20 00:16:34 INFO celery.app.trace Task connecthub.dispatcher.tick[bee6ca19-d51f-4d8b-a6e5-2dfe04d75b38] succeeded in 0.006830761005403474s: {'triggered': 0} +2026-01-20 00:17:34 INFO celery.app.trace Task connecthub.dispatcher.tick[de4dd22e-feb5-403b-b967-8266de013acf] succeeded in 0.010022850008681417s: {'triggered': 0} +2026-01-20 00:18:32 INFO celery.app.trace Task connecthub.ldap.sync[e407a49c-d848-4249-90e8-db3086214137] succeeded in 0.009879807010293007s: 0 +2026-01-20 00:18:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7a920112-a01a-4f60-974c-fb61a0a52666] succeeded in 0.0033314640168100595s: {'triggered': 0} +2026-01-20 00:19:34 INFO celery.app.trace Task connecthub.dispatcher.tick[88dd092c-5695-494c-8b8e-eebfd7d331f1] succeeded in 0.0047748819924890995s: {'triggered': 0} +2026-01-20 00:20:34 INFO celery.app.trace Task connecthub.dispatcher.tick[366c3090-01dc-4056-b47d-bfa90ff81074] succeeded in 0.017093736008973792s: {'triggered': 0} +2026-01-20 00:21:34 INFO celery.app.trace Task connecthub.dispatcher.tick[eb43c729-74b7-4028-845d-5e07b1020e06] succeeded in 0.005849217996001244s: {'triggered': 0} +2026-01-20 00:22:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a79d21c3-a04c-49be-9075-317bad3ca325] succeeded in 0.005784801003756002s: {'triggered': 0} +2026-01-20 00:23:32 INFO celery.app.trace Task connecthub.ldap.sync[6bd7fe83-c4ec-489d-9263-11378a333930] succeeded in 0.00950868200743571s: 0 +2026-01-20 00:23:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e8ecab29-f7dd-481c-b0e2-4a0c8671986c] succeeded in 0.0014138779952190816s: {'triggered': 0} +2026-01-20 00:24:34 INFO celery.app.trace Task connecthub.dispatcher.tick[eeae782e-d2d5-457d-8240-2a5f2d97238e] succeeded in 0.004341297986684367s: {'triggered': 0} +2026-01-20 00:25:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c7523146-6920-4bda-8f83-1b7608970275] succeeded in 0.004466965998290107s: {'triggered': 0} +2026-01-20 00:26:34 INFO celery.app.trace Task connecthub.dispatcher.tick[06cef986-157a-4e1f-bd17-747e766846ce] succeeded in 0.009197765000863s: {'triggered': 0} +2026-01-20 00:27:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9e54e47d-76d3-4e4b-ab99-9d93f7aed560] succeeded in 0.008260681002866477s: {'triggered': 0} +2026-01-20 00:28:32 INFO celery.app.trace Task connecthub.ldap.sync[42f7fa54-8a15-4069-9389-9215dec92c13] succeeded in 0.010094516997924075s: 0 +2026-01-20 00:28:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c1d04130-49c0-49bd-adbd-601611cc0680] succeeded in 0.007145845011109486s: {'triggered': 0} +2026-01-20 00:29:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8da6428b-9d56-4212-936e-e2d85608162e] succeeded in 0.009802640997804701s: {'triggered': 0} +2026-01-20 00:30:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0f1e1856-2817-4dcc-abd5-6c43ff274ae1] succeeded in 0.006069968017982319s: {'triggered': 0} +2026-01-20 00:31:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c9ed8cb9-ff20-42ac-90ce-486e2fcb4326] succeeded in 0.016801486985059455s: {'triggered': 0} +2026-01-20 00:32:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2c07e61e-d561-420c-8a7d-31c9205aaeff] succeeded in 0.004225298995152116s: {'triggered': 0} +2026-01-20 00:33:32 INFO celery.app.trace Task connecthub.ldap.sync[a1f025f1-cf28-4644-bdc2-40609223e69a] succeeded in 0.015559984982246533s: 0 +2026-01-20 00:33:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e20925ad-03bf-485e-b5c3-eaef2df83b81] succeeded in 0.003287755011115223s: {'triggered': 0} +2026-01-20 00:34:34 INFO celery.app.trace Task connecthub.dispatcher.tick[da54ad99-be3a-4c8c-951f-458006a0a30d] succeeded in 0.00707001201226376s: {'triggered': 0} +2026-01-20 00:35:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b91ed123-4356-4fc6-b5b2-d3fd487785dc] succeeded in 0.004819460998987779s: {'triggered': 0} +2026-01-20 00:36:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8f9a6da6-02ac-4863-adf3-b401d0734fae] succeeded in 0.009419337002327666s: {'triggered': 0} +2026-01-20 00:37:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0754232e-bfb6-4534-a06d-fb4e8c0a79f1] succeeded in 0.01670655599446036s: {'triggered': 0} +2026-01-20 00:38:32 INFO celery.app.trace Task connecthub.ldap.sync[1c5fe218-e2d4-400f-8646-3ba5c1a4b77a] succeeded in 0.00542567201773636s: 0 +2026-01-20 00:38:34 INFO celery.app.trace Task connecthub.dispatcher.tick[cb1587e8-f4fe-424f-a318-00a332f00d68] succeeded in 0.0034423369797877967s: {'triggered': 0} +2026-01-20 00:39:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5bc62461-3089-4a2d-a212-38c7e9d258db] succeeded in 0.012612396996701136s: {'triggered': 0} +2026-01-20 00:40:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7cb2d1e2-7910-46d9-a711-8f03aac69c2f] succeeded in 0.005986216012388468s: {'triggered': 0} +2026-01-20 00:41:34 INFO celery.app.trace Task connecthub.dispatcher.tick[88041fe2-84ae-4811-b338-03a80a110532] succeeded in 0.015559603984002024s: {'triggered': 0} +2026-01-20 00:42:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f601786d-ea3d-4cdb-bd02-53cc005a9259] succeeded in 0.006601427012355998s: {'triggered': 0} +2026-01-20 00:43:32 INFO celery.app.trace Task connecthub.ldap.sync[87379341-6442-4f9c-a7e6-8dbe3f3c9b1a] succeeded in 0.00785713701043278s: 0 +2026-01-20 00:43:34 INFO celery.app.trace Task connecthub.dispatcher.tick[334b58a2-1e18-41cb-a4b2-ced01bab11d5] succeeded in 0.00345592200756073s: {'triggered': 0} +2026-01-20 00:44:34 INFO celery.app.trace Task connecthub.dispatcher.tick[504e690b-7850-4fdb-b48d-6eafb6cf02ac] succeeded in 0.00708867798675783s: {'triggered': 0} +2026-01-20 00:45:34 INFO celery.app.trace Task connecthub.dispatcher.tick[193ad65f-12b0-4e7e-808d-75b5a9014499] succeeded in 0.011330227018333972s: {'triggered': 0} +2026-01-20 00:46:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e05898e1-8528-4d14-9bc9-56b7df73ba77] succeeded in 0.002830504992743954s: {'triggered': 0} +2026-01-20 00:47:34 INFO celery.app.trace Task connecthub.dispatcher.tick[96564f38-9d54-47d3-b343-99c896b52452] succeeded in 0.007703012990532443s: {'triggered': 0} +2026-01-20 00:48:32 INFO celery.app.trace Task connecthub.ldap.sync[7b813f5e-c340-4df3-ac99-57c0e1ca2bc1] succeeded in 0.011790435994043946s: 0 +2026-01-20 00:48:34 INFO celery.app.trace Task connecthub.dispatcher.tick[059aa5ac-c374-44ea-b56d-d1d23e433c34] succeeded in 0.003808173001743853s: {'triggered': 0} +2026-01-20 00:49:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f94e84f3-60bb-48b6-a180-2edbc10d93d3] succeeded in 0.004280924011254683s: {'triggered': 0} +2026-01-20 00:50:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a60ccf34-3811-4b11-b147-be769d1351a8] succeeded in 0.0038735900016035885s: {'triggered': 0} +2026-01-20 00:51:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4e783951-e4fe-4232-bc6f-e2a94b1ff274] succeeded in 0.01185514498502016s: {'triggered': 0} +2026-01-20 00:52:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5c1c968b-7598-46bb-b4ba-3ecc3dbea470] succeeded in 0.0038394230068661273s: {'triggered': 0} +2026-01-20 00:53:32 INFO celery.app.trace Task connecthub.ldap.sync[c58029be-c849-4e57-a470-0790f57360de] succeeded in 0.007884221995482221s: 0 +2026-01-20 00:53:34 INFO celery.app.trace Task connecthub.dispatcher.tick[11cd76c0-1677-4164-b53b-6ba560fbc118] succeeded in 0.0043390899954829365s: {'triggered': 0} +2026-01-20 00:54:34 INFO celery.app.trace Task connecthub.dispatcher.tick[adf79a66-91a0-468f-b070-75e775081db1] succeeded in 0.00916622401564382s: {'triggered': 0} +2026-01-20 00:55:34 INFO celery.app.trace Task connecthub.dispatcher.tick[354d837a-9594-47e8-beb0-c065be8667b5] succeeded in 0.0028846719942521304s: {'triggered': 0} +2026-01-20 00:56:34 INFO celery.app.trace Task connecthub.dispatcher.tick[01cceb24-c9ec-444e-9251-e6f595a91511] succeeded in 0.004426007013535127s: {'triggered': 0} +2026-01-20 00:57:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2fe0c50d-eb69-4c0b-8500-9a4c29f8ba63] succeeded in 0.012576228997204453s: {'triggered': 0} +2026-01-20 00:58:32 INFO celery.app.trace Task connecthub.ldap.sync[c6a20295-2c42-4f2e-a0f3-5d70f66c5ac5] succeeded in 0.009189889999106526s: 0 +2026-01-20 00:58:34 INFO celery.app.trace Task connecthub.dispatcher.tick[9691cddb-bd1c-490e-9beb-1224c0ec9ab7] succeeded in 0.0053456339810509235s: {'triggered': 0} +2026-01-20 00:59:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6eb854ef-e0de-4b9f-95a7-931e28c059ce] succeeded in 0.004111590009415522s: {'triggered': 0} +2026-01-20 01:00:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c6c9cfba-94b3-4d14-b2e8-de8022ae4fa3] succeeded in 0.003929048019926995s: {'triggered': 0} +2026-01-20 01:01:34 INFO celery.app.trace Task connecthub.dispatcher.tick[562b416a-1fe6-4ac1-8865-048a513631ee] succeeded in 0.013110146974213421s: {'triggered': 0} +2026-01-20 01:02:34 INFO celery.app.trace Task connecthub.dispatcher.tick[13af0ab8-a039-47cd-ad2d-3daa6f4aed62] succeeded in 0.0100206830247771s: {'triggered': 0} +2026-01-20 01:03:32 INFO celery.app.trace Task connecthub.ldap.sync[4dcb7295-1cd2-4cb7-99e0-b4b3594eb453] succeeded in 0.030531550000887364s: 0 +2026-01-20 01:03:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1b72cc80-b23c-4108-97fd-dd43b21bf9c4] succeeded in 0.006052759999874979s: {'triggered': 0} +2026-01-20 01:04:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e974c5ba-5562-4798-b390-3f1aae166fbc] succeeded in 0.0038035900215618312s: {'triggered': 0} +2026-01-20 01:05:34 INFO celery.app.trace Task connecthub.dispatcher.tick[27ea2b89-7c4d-4b5a-b998-49d017148647] succeeded in 0.01280572998803109s: {'triggered': 0} +2026-01-20 01:06:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1ddadf14-48a3-42c5-a256-686d8fa38e8f] succeeded in 0.019380240002647042s: {'triggered': 0} +2026-01-20 01:07:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1477761e-7277-4b6f-bda5-f3566042c97b] succeeded in 0.00918688898673281s: {'triggered': 0} +2026-01-20 01:08:32 INFO celery.app.trace Task connecthub.ldap.sync[ddb85ad1-c02c-41d6-993e-ae4821092c14] succeeded in 0.01124061000882648s: 0 +2026-01-20 01:08:34 INFO celery.app.trace Task connecthub.dispatcher.tick[65123064-7d76-4c2e-8844-ae8112d1c14e] succeeded in 0.0056922429939731956s: {'triggered': 0} +2026-01-20 01:09:34 INFO celery.app.trace Task connecthub.dispatcher.tick[62f89f23-eae2-414a-8120-de681b9a3d7e] succeeded in 0.01345901598688215s: {'triggered': 0} +2026-01-20 01:10:34 INFO celery.app.trace Task connecthub.dispatcher.tick[1ba743b2-ee95-47aa-882c-6d483e886e98] succeeded in 0.013130682025803253s: {'triggered': 0} +2026-01-20 01:11:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5ef75389-f2df-481c-8d8e-d931433f52d9] succeeded in 0.013395772024523467s: {'triggered': 0} +2026-01-20 01:12:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fdff0ca6-b8f3-459b-b4ca-b322ee6af5bc] succeeded in 0.006031684984918684s: {'triggered': 0} +2026-01-20 01:13:32 INFO celery.app.trace Task connecthub.ldap.sync[d3720304-258b-433d-a6de-3f189641c8af] succeeded in 0.01570592197822407s: 0 +2026-01-20 01:13:34 INFO celery.app.trace Task connecthub.dispatcher.tick[01c9c40d-961f-4836-ba0c-6fe64b43583a] succeeded in 0.004227803990943357s: {'triggered': 0} +2026-01-20 01:14:34 INFO celery.app.trace Task connecthub.dispatcher.tick[f29f245f-64de-426a-ad4a-160824eb7b07] succeeded in 0.008708851994015276s: {'triggered': 0} +2026-01-20 01:15:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3a4ddd3b-72ed-4359-a583-9eab9afe736d] succeeded in 0.004779843002324924s: {'triggered': 0} +2026-01-20 01:16:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3893fa6b-2543-42e1-8427-9658a4f6d9a8] succeeded in 0.021547787997405976s: {'triggered': 0} +2026-01-20 01:17:34 INFO celery.app.trace Task connecthub.dispatcher.tick[dcd0155b-1715-4de7-bffe-10e2af780c8e] succeeded in 0.014021565992152318s: {'triggered': 0} +2026-01-20 01:18:32 INFO celery.app.trace Task connecthub.ldap.sync[433a39a3-2d64-4774-8fdf-81400df3ea6b] succeeded in 0.014668693009298295s: 0 +2026-01-20 01:18:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6a0fa16e-40f7-4d37-9a66-5992cf50cb9a] succeeded in 0.006007468997268006s: {'triggered': 0} +2026-01-20 01:19:34 INFO celery.app.trace Task connecthub.dispatcher.tick[ec891e09-4235-4ec6-bf9f-785bc258c0ed] succeeded in 0.030666054983157665s: {'triggered': 0} +2026-01-20 01:20:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e7c70277-9019-43ff-976b-ddae43ea7306] succeeded in 0.00473525800043717s: {'triggered': 0} +2026-01-20 01:21:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5406e54b-0297-4907-87ac-3bd738fa6dd4] succeeded in 0.027196381997782737s: {'triggered': 0} +2026-01-20 01:22:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2d8e2929-0a87-4f83-9f46-a85100297fbb] succeeded in 0.011254935001488775s: {'triggered': 0} +2026-01-20 01:23:32 INFO celery.app.trace Task connecthub.ldap.sync[916ddbf9-0c09-4282-ae14-803725608792] succeeded in 0.038114061986561865s: 0 +2026-01-20 01:23:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b5b0fc0d-9983-4ec9-a904-cd681effbdb2] succeeded in 0.004656466015148908s: {'triggered': 0} +2026-01-20 01:24:34 INFO celery.app.trace Task connecthub.dispatcher.tick[bca01b57-e936-4315-99f2-088cca509e86] succeeded in 0.04016794802737422s: {'triggered': 0} +2026-01-20 01:25:34 INFO celery.app.trace Task connecthub.dispatcher.tick[6ba799a4-bb3d-4601-acba-56810dfcce0f] succeeded in 0.008331899007316679s: {'triggered': 0} +2026-01-20 01:26:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2384a58c-695a-491b-b304-b44b62e589a3] succeeded in 0.003443922003498301s: {'triggered': 0} +2026-01-20 01:27:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0161ade9-f0df-4e8d-bf0b-43e3ced2ca38] succeeded in 0.0060019259981345385s: {'triggered': 0} +2026-01-20 01:28:32 INFO celery.app.trace Task connecthub.ldap.sync[3fb18b16-e9b0-48cd-a250-75c427f1d274] succeeded in 0.005455175996758044s: 0 +2026-01-20 01:28:34 INFO celery.app.trace Task connecthub.dispatcher.tick[31b76165-cf7b-4d80-ab1f-86026b467adf] succeeded in 0.0039035060035530478s: {'triggered': 0} +2026-01-20 01:29:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8806d444-d133-42e0-8346-d93382f0c942] succeeded in 0.003050213010283187s: {'triggered': 0} +2026-01-20 01:30:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0267b94e-a57d-4e63-8d7f-62590b2f2372] succeeded in 0.01388277200749144s: {'triggered': 0} +2026-01-20 01:31:34 INFO celery.app.trace Task connecthub.dispatcher.tick[12369eba-5572-4fa7-9e8a-b19536b530f5] succeeded in 0.00737092801136896s: {'triggered': 0} +2026-01-20 01:32:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a68bcb9c-5c40-40b1-a37b-43c584a62b19] succeeded in 0.010530724975978956s: {'triggered': 0} +2026-01-20 01:33:32 INFO celery.app.trace Task connecthub.ldap.sync[70d28399-6421-44da-b504-0ab6a75c7e35] succeeded in 0.008420138008659706s: 0 +2026-01-20 01:33:34 INFO celery.app.trace Task connecthub.dispatcher.tick[845db6e6-4654-485c-9a1d-db030da0fc2d] succeeded in 0.005018299998482689s: {'triggered': 0} +2026-01-20 01:34:34 INFO celery.app.trace Task connecthub.dispatcher.tick[49399d6a-2f5a-463c-9dd0-af1daf97feb3] succeeded in 0.0111493089934811s: {'triggered': 0} +2026-01-20 01:35:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7de926c3-2be3-421e-9e76-3afe3b46010f] succeeded in 0.0045533399970736355s: {'triggered': 0} +2026-01-20 01:36:34 INFO celery.app.trace Task connecthub.dispatcher.tick[ff2a17ef-22ef-4705-a7c6-819c11120713] succeeded in 0.010469264991115779s: {'triggered': 0} +2026-01-20 01:37:34 INFO celery.app.trace Task connecthub.dispatcher.tick[d36c9cc2-55c2-4dbb-bdd3-5931cbb68b3c] succeeded in 0.02520996198290959s: {'triggered': 0} +2026-01-20 01:38:32 INFO celery.app.trace Task connecthub.ldap.sync[1897d571-c9af-4431-86ac-313b9c7c4a56] succeeded in 0.007249513000715524s: 0 +2026-01-20 01:38:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7c237faa-c3e5-4cf3-88d2-cb6f3bdc4fc7] succeeded in 0.00533942598849535s: {'triggered': 0} +2026-01-20 01:39:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7c1e4473-e90a-4307-a455-c4b92084c476] succeeded in 0.007365097990259528s: {'triggered': 0} +2026-01-20 01:40:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0f4e51e1-6243-4b17-857a-d70dc4e97893] succeeded in 0.014120525011094287s: {'triggered': 0} +2026-01-20 01:41:34 INFO celery.app.trace Task connecthub.dispatcher.tick[c8fd0b2f-7761-4be0-80f3-6d471e514591] succeeded in 0.009130391001235694s: {'triggered': 0} +2026-01-20 01:42:34 INFO celery.app.trace Task connecthub.dispatcher.tick[79a39ea4-eb82-408f-8321-74ba4527dd0d] succeeded in 0.026291340996976942s: {'triggered': 0} +2026-01-20 01:43:32 INFO celery.app.trace Task connecthub.ldap.sync[c0a7aada-e3b9-43b4-af92-f876d92b5a8a] succeeded in 0.030728723999345675s: 0 +2026-01-20 01:43:34 INFO celery.app.trace Task connecthub.dispatcher.tick[953acaed-ce74-406f-b60c-187426952563] succeeded in 0.003555381001206115s: {'triggered': 0} +2026-01-20 01:44:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8014c681-b323-456a-877a-740093c9307e] succeeded in 0.018766950990539044s: {'triggered': 0} +2026-01-20 01:45:34 INFO celery.app.trace Task connecthub.dispatcher.tick[4093077c-800b-4b53-994c-c44a0dbc2d45] succeeded in 0.005204551009228453s: {'triggered': 0} +2026-01-20 01:46:34 INFO celery.app.trace Task connecthub.dispatcher.tick[dfebcee1-a293-4927-9bc8-99217330341d] succeeded in 0.01275119002093561s: {'triggered': 0} +2026-01-20 01:47:34 INFO celery.app.trace Task connecthub.dispatcher.tick[7d962b11-a1a9-4e53-8190-1531602e6d0a] succeeded in 0.013356315990677103s: {'triggered': 0} +2026-01-20 01:48:32 INFO celery.app.trace Task connecthub.ldap.sync[821bd29f-5c9d-4ded-a00c-ae06874af21e] succeeded in 0.013020606013014913s: 0 +2026-01-20 01:48:34 INFO celery.app.trace Task connecthub.dispatcher.tick[a8cfa281-591d-4037-bf9c-cb3f91aa2dc3] succeeded in 0.006831178994616494s: {'triggered': 0} +2026-01-20 01:49:34 INFO celery.app.trace Task connecthub.dispatcher.tick[71ba4607-21b8-434d-95b5-95214763893d] succeeded in 0.014731194009073079s: {'triggered': 0} +2026-01-20 01:50:34 INFO celery.app.trace Task connecthub.dispatcher.tick[95e04219-f5a7-4080-994e-3537518d7186] succeeded in 0.004083298990735784s: {'triggered': 0} +2026-01-20 01:51:34 INFO celery.app.trace Task connecthub.dispatcher.tick[abc4d68a-61d1-4dd6-923c-5445b2f15746] succeeded in 0.01145535398973152s: {'triggered': 0} +2026-01-20 01:52:34 INFO celery.app.trace Task connecthub.dispatcher.tick[e21c0e35-b43f-49aa-98fc-7ed0809237ef] succeeded in 0.008901724009774625s: {'triggered': 0} +2026-01-20 01:53:32 INFO celery.app.trace Task connecthub.ldap.sync[632d98aa-9912-4011-a9b0-51ea8c8db285] succeeded in 0.020208494999678805s: 0 +2026-01-20 01:53:34 INFO celery.app.trace Task connecthub.dispatcher.tick[8b6957c2-061a-4e8b-97b9-511340a3a942] succeeded in 0.003658464993350208s: {'triggered': 0} +2026-01-20 01:54:34 INFO celery.app.trace Task connecthub.dispatcher.tick[17a8877b-5d6c-4cab-a1e7-31d20c04f828] succeeded in 0.01423828600673005s: {'triggered': 0} +2026-01-20 01:55:34 INFO celery.app.trace Task connecthub.dispatcher.tick[5a759174-caea-4d8f-8974-67a143eeb822] succeeded in 0.0102594570198562s: {'triggered': 0} +2026-01-20 01:56:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fe17e089-a175-40d3-8482-7029d19ac4cc] succeeded in 0.013099019008222967s: {'triggered': 0} +2026-01-20 01:57:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3e692a09-4302-41f7-b5dd-095bdf74b39e] succeeded in 0.002347033005207777s: {'triggered': 0} +2026-01-20 01:58:32 INFO celery.app.trace Task connecthub.ldap.sync[7701100b-497d-4bcc-8ef7-a5c49ec0830e] succeeded in 0.01613190397620201s: 0 +2026-01-20 01:58:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b07da356-c1db-403b-b771-a64e7dac69ef] succeeded in 0.006240466987947002s: {'triggered': 0} +2026-01-20 01:59:34 INFO celery.app.trace Task connecthub.dispatcher.tick[39c00c7f-a383-4e9c-b3e3-314e5ffeb865] succeeded in 0.0077182289969641715s: {'triggered': 0} +2026-01-20 02:00:34 INFO celery.app.trace Task connecthub.dispatcher.tick[91e6667b-ab37-4e00-8340-1014352265f9] succeeded in 0.008746612002141774s: {'triggered': 0} +2026-01-20 02:01:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3a451220-c0eb-4911-9a2c-eff300756d20] succeeded in 0.004140849021496251s: {'triggered': 0} +2026-01-20 02:02:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fb0abd37-9359-4dc2-bf98-504c84fedf7e] succeeded in 0.018128777999663725s: {'triggered': 0} +2026-01-20 02:03:32 INFO celery.app.trace Task connecthub.ldap.sync[99e87b8f-4d1c-4ebd-9b2f-f35ffb038749] succeeded in 0.011389858002075925s: 0 +2026-01-20 02:03:34 INFO celery.app.trace Task connecthub.dispatcher.tick[db237b7a-1ad5-499e-bd8e-b2dd404af4bf] succeeded in 0.002963506995001808s: {'triggered': 0} +2026-01-20 02:04:34 INFO celery.app.trace Task connecthub.dispatcher.tick[91e0983c-f400-4d34-8923-78e76e8c1348] succeeded in 0.007732351019512862s: {'triggered': 0} +2026-01-20 02:05:34 INFO celery.app.trace Task connecthub.dispatcher.tick[edf8b54a-43c1-433b-95d7-64ac63d4a8fd] succeeded in 0.007862264988943934s: {'triggered': 0} +2026-01-20 02:06:34 INFO celery.app.trace Task connecthub.dispatcher.tick[65065672-3930-4c12-8535-a2850667b080] succeeded in 0.004869758995482698s: {'triggered': 0} +2026-01-20 02:07:34 INFO celery.app.trace Task connecthub.dispatcher.tick[3443c323-4924-40fe-9ae9-b4e8fde57638] succeeded in 0.016761750011937693s: {'triggered': 0} +2026-01-20 02:08:32 INFO celery.app.trace Task connecthub.ldap.sync[031a09bb-4d7e-4367-83ba-1822d7a76c26] succeeded in 0.005337554001016542s: 0 +2026-01-20 02:08:34 INFO celery.app.trace Task connecthub.dispatcher.tick[df87863d-7cab-4190-8582-ede8af37e4a3] succeeded in 0.003260799014242366s: {'triggered': 0} +2026-01-20 02:09:34 INFO celery.app.trace Task connecthub.dispatcher.tick[2f14ab9f-b0e4-4af6-8942-b88239036499] succeeded in 0.004759386996738613s: {'triggered': 0} +2026-01-20 02:10:34 INFO celery.app.trace Task connecthub.dispatcher.tick[0791be82-69d9-4779-984e-622fab64f6c9] succeeded in 0.008218645001761615s: {'triggered': 0} +2026-01-20 02:11:34 INFO celery.app.trace Task connecthub.dispatcher.tick[fdac4875-f338-4173-aad7-b6dc59db690d] succeeded in 0.002999040996655822s: {'triggered': 0} +2026-01-20 02:12:34 INFO celery.app.trace Task connecthub.dispatcher.tick[b90efc80-c0da-44d1-909b-24289db8e0da] succeeded in 0.019109079003101215s: {'triggered': 0} +2026-01-20 02:17:28 INFO celery.app.trace Task connecthub.dispatcher.tick[69097d81-a64f-41e2-b1e9-7e607fd24b79] succeeded in 0.0819681569992099s: {'triggered': 0} +2026-01-20 02:17:28 INFO celery.app.trace Task connecthub.ldap.sync[5f9871f5-9408-4433-8d1e-550e28992013] succeeded in 0.16241185297258198s: 0 +2026-01-20 02:18:28 INFO celery.app.trace Task connecthub.dispatcher.tick[9f3356be-c1cb-4dc0-9676-964e1df6e110] succeeded in 0.028477651998400688s: {'triggered': 0} +2026-01-20 02:19:28 INFO celery.app.trace Task connecthub.dispatcher.tick[8bf1fbd5-0853-43b9-a799-dbabedd70cd5] succeeded in 0.01147802799823694s: {'triggered': 0} +2026-01-20 02:20:28 INFO celery.app.trace Task connecthub.dispatcher.tick[2b50d0e3-38b1-4e89-80ee-ae2825e242d9] succeeded in 0.02046588298981078s: {'triggered': 0} +2026-01-20 02:21:28 INFO celery.app.trace Task connecthub.dispatcher.tick[d502f4be-d793-49c7-9675-eecfc86fc9ad] succeeded in 0.021824094001203775s: {'triggered': 0} +2026-01-20 02:22:27 INFO celery.app.trace Task connecthub.ldap.sync[365f9288-42e2-403d-8a61-29c7488dfc13] succeeded in 0.013474158011376858s: 0 +2026-01-20 02:22:28 INFO celery.app.trace Task connecthub.dispatcher.tick[02101ab4-f4ec-4567-bd5f-284d56a20f60] succeeded in 0.0034172169980593026s: {'triggered': 0} +2026-01-20 02:23:28 INFO celery.app.trace Task connecthub.dispatcher.tick[a3ce9ea0-dcab-490b-978e-fc509371bda6] succeeded in 0.01807783599360846s: {'triggered': 0} +2026-01-20 02:24:28 INFO celery.app.trace Task connecthub.dispatcher.tick[27dc2276-8f75-484d-bb38-06245424576a] succeeded in 0.015982079989043996s: {'triggered': 0} +2026-01-20 02:25:28 INFO celery.app.trace Task connecthub.dispatcher.tick[d1344def-4c99-4c04-8e6e-683b2c524e80] succeeded in 0.05355325498385355s: {'triggered': 0} +2026-01-20 02:26:28 INFO celery.app.trace Task connecthub.dispatcher.tick[071b9ac6-a551-4027-b0d0-72fd04b5e596] succeeded in 0.011760194989619777s: {'triggered': 0} +2026-01-20 02:27:27 INFO celery.app.trace Task connecthub.ldap.sync[f47d5c61-24f2-4a68-beb5-b6141af12e58] succeeded in 0.01627537200693041s: 0 +2026-01-20 02:27:28 INFO celery.app.trace Task connecthub.dispatcher.tick[4234433c-97b1-4d1f-ae60-95da9878b5b2] succeeded in 0.005318054987583309s: {'triggered': 0} +2026-01-20 02:28:28 INFO celery.app.trace Task connecthub.dispatcher.tick[55518fe4-a02b-48c0-b1a5-e71cb07b9c5d] succeeded in 0.01663638898753561s: {'triggered': 0} +2026-01-20 02:29:28 INFO celery.app.trace Task connecthub.dispatcher.tick[8c60610b-bcac-4374-b859-514539269a12] succeeded in 0.011543758999323472s: {'triggered': 0} +2026-01-20 02:30:28 INFO celery.app.trace Task connecthub.dispatcher.tick[44abd60c-2d97-402a-b4ac-bf8a30ec8d31] succeeded in 0.017630513000767678s: {'triggered': 0} +2026-01-20 02:31:28 INFO celery.app.trace Task connecthub.dispatcher.tick[37b9d1d3-f7a5-4007-8f66-77b7706214aa] succeeded in 0.009888008004054427s: {'triggered': 0} +2026-01-20 02:32:27 INFO celery.app.trace Task connecthub.ldap.sync[952b4868-0fc9-46a4-b812-41045a860224] succeeded in 0.019450805993983522s: 0 +2026-01-20 02:32:28 INFO celery.app.trace Task connecthub.dispatcher.tick[a776a74a-d1c6-43a2-8aff-28b9816f665f] succeeded in 0.007125255011487752s: {'triggered': 0} +2026-01-20 02:33:28 INFO celery.app.trace Task connecthub.dispatcher.tick[65ddde39-4c1e-4e56-8ca4-0d4785d74a49] succeeded in 0.011026674997992814s: {'triggered': 0} +2026-01-20 02:34:28 INFO celery.app.trace Task connecthub.dispatcher.tick[a98d732b-cb52-4451-9bb1-af06027695e0] succeeded in 0.009785132977413014s: {'triggered': 0} +2026-01-20 02:35:28 INFO celery.app.trace Task connecthub.dispatcher.tick[65dde24f-2822-4e40-9cbf-4a1d85365de0] succeeded in 0.006645422021392733s: {'triggered': 0} +2026-01-20 02:36:28 INFO celery.app.trace Task connecthub.dispatcher.tick[9e4f4645-9af7-44d8-a58f-62dfd7c95ce3] succeeded in 0.017301763989962637s: {'triggered': 0} +2026-01-20 02:37:27 INFO celery.app.trace Task connecthub.ldap.sync[39853a42-3277-44de-9c0a-86804ef95694] succeeded in 0.017114804009906948s: 0 +2026-01-20 02:37:28 INFO celery.app.trace Task connecthub.dispatcher.tick[24ff2b21-18e3-49cb-836f-d5b246a3ee24] succeeded in 0.0059882540081162006s: {'triggered': 0} +2026-01-20 02:38:28 INFO celery.app.trace Task connecthub.dispatcher.tick[3b3e068f-01b3-4fe4-acc4-4819f1569b84] succeeded in 0.011824841989437118s: {'triggered': 0} +2026-01-20 02:39:28 INFO celery.app.trace Task connecthub.dispatcher.tick[bb0662e4-18c2-44a5-b367-d7ad400fffeb] succeeded in 0.028331148001598194s: {'triggered': 0} +2026-01-20 02:40:28 INFO celery.app.trace Task connecthub.dispatcher.tick[262df2f0-c331-4602-8f66-edccfec352ae] succeeded in 0.013017303019296378s: {'triggered': 0} +2026-01-20 02:41:28 INFO celery.app.trace Task connecthub.dispatcher.tick[843b5daf-593d-4fe6-afcf-681dbc3ff71b] succeeded in 0.018318265007110313s: {'triggered': 0} +2026-01-20 02:42:27 INFO celery.app.trace Task connecthub.ldap.sync[2acc6f59-8226-41b1-936a-1257c89757eb] succeeded in 0.016532597015611827s: 0 +2026-01-20 02:42:28 INFO celery.app.trace Task connecthub.dispatcher.tick[3dbfdc55-1960-40da-921e-54211d9b2621] succeeded in 0.004610545001924038s: {'triggered': 0} +2026-01-20 02:43:28 INFO celery.app.trace Task connecthub.dispatcher.tick[287c9f67-350c-4988-8fcb-2339ccbd05cf] succeeded in 0.011459386994829401s: {'triggered': 0} +2026-01-20 02:44:28 INFO celery.app.trace Task connecthub.dispatcher.tick[0100eab2-b2db-423c-b846-29ec2e4ad451] succeeded in 0.01922547398135066s: {'triggered': 0} +2026-01-20 02:45:28 INFO celery.app.trace Task connecthub.dispatcher.tick[d2fe467e-cfa8-4266-9b2b-e454bb060356] succeeded in 0.024403686984442174s: {'triggered': 0} +2026-01-20 02:46:28 INFO celery.app.trace Task connecthub.dispatcher.tick[1c458460-d27b-41ee-907b-fb27bd0659a8] succeeded in 0.01140196798951365s: {'triggered': 0} +2026-01-20 02:47:27 INFO celery.app.trace Task connecthub.ldap.sync[c23e357f-5d52-4eb2-a0eb-bf9501b64a65] succeeded in 0.015359470999101177s: 0 +2026-01-20 02:47:28 INFO celery.app.trace Task connecthub.dispatcher.tick[66e86234-709c-4693-a396-84ffc5c01c6b] succeeded in 0.006126214022515342s: {'triggered': 0} +2026-01-20 02:48:28 INFO celery.app.trace Task connecthub.dispatcher.tick[fe373717-0667-43bd-8384-23fafc4dcba5] succeeded in 0.012699219019850716s: {'triggered': 0} +2026-01-20 02:49:28 INFO celery.app.trace Task connecthub.dispatcher.tick[d7e156e7-4d8e-4d33-a621-d740a62c29e0] succeeded in 0.014270179002778605s: {'triggered': 0} +2026-01-20 02:50:28 INFO celery.app.trace Task connecthub.dispatcher.tick[e8320685-0f4d-4617-91e5-18414e87e94a] succeeded in 0.06291042699012905s: {'triggered': 0} +2026-01-20 02:51:28 INFO celery.app.trace Task connecthub.dispatcher.tick[8ca522f3-57ea-480a-bb7d-9d49849e8edb] succeeded in 0.02148881001630798s: {'triggered': 0} +2026-01-20 02:52:27 INFO celery.app.trace Task connecthub.ldap.sync[616ce10d-568c-4c0d-a4b6-f7a7c9a0a434] succeeded in 0.06828338900231756s: 0 +2026-01-20 02:52:28 INFO celery.app.trace Task connecthub.dispatcher.tick[939238dc-c8b4-4269-a343-33679c41013e] succeeded in 0.004380086989840493s: {'triggered': 0} +2026-01-20 02:53:28 INFO celery.app.trace Task connecthub.dispatcher.tick[1c475a4e-e5e9-4cc5-8515-2927bffc77d9] succeeded in 0.010574049985734746s: {'triggered': 0} +2026-01-20 02:54:28 INFO celery.app.trace Task connecthub.dispatcher.tick[96c59eac-260e-4c41-8e1e-56f9605406d0] succeeded in 0.021299142012139782s: {'triggered': 0} +2026-01-20 02:55:28 INFO celery.app.trace Task connecthub.dispatcher.tick[0c6b1933-8717-4722-9ddf-730fc9791e0e] succeeded in 0.023940185987157747s: {'triggered': 0} +2026-01-20 02:56:28 INFO celery.app.trace Task connecthub.dispatcher.tick[37e8c55d-2472-4423-99fe-f83d85c3cc08] succeeded in 0.023385435983072966s: {'triggered': 0} +2026-01-20 02:57:27 INFO celery.app.trace Task connecthub.ldap.sync[89f341a2-1859-470c-816b-552f7fab3b49] succeeded in 0.01548255400848575s: 0 +2026-01-20 02:57:28 INFO celery.app.trace Task connecthub.dispatcher.tick[224df8d6-ebf7-43d3-85bc-e9b28c27473f] succeeded in 0.0037321699783205986s: {'triggered': 0} +2026-01-20 02:58:28 INFO celery.app.trace Task connecthub.dispatcher.tick[82449f35-96af-4dc4-b827-d196edfe9c76] succeeded in 0.0049765040166676044s: {'triggered': 0} +2026-01-20 02:59:28 INFO celery.app.trace Task connecthub.dispatcher.tick[8d84787d-a83b-438c-88c4-994701bf065e] succeeded in 0.01096850898466073s: {'triggered': 0} +2026-01-20 03:00:28 INFO celery.app.trace Task connecthub.dispatcher.tick[20fe4de7-d542-4231-8b4b-be7b287911cc] succeeded in 0.015312800998799503s: {'triggered': 0} +2026-01-20 03:01:28 INFO celery.app.trace Task connecthub.dispatcher.tick[f4c3c8dc-38d8-4c56-a533-71de8f70659e] succeeded in 0.009844424988841638s: {'triggered': 0} +2026-01-20 03:02:27 INFO celery.app.trace Task connecthub.ldap.sync[dcce7bb5-bef5-4cf0-ae90-b184e1b92582] succeeded in 0.010733133996836841s: 0 +2026-01-20 03:02:28 INFO celery.app.trace Task connecthub.dispatcher.tick[c653abcf-9829-44fa-9aac-b51ea7de986c] succeeded in 0.003969294979469851s: {'triggered': 0} +2026-01-20 03:03:28 INFO celery.app.trace Task connecthub.dispatcher.tick[fe88edc8-38eb-41c9-b37b-513f26d9611e] succeeded in 0.03195040099672042s: {'triggered': 0} +2026-01-20 03:04:28 INFO celery.app.trace Task connecthub.dispatcher.tick[95d8ac1c-5b03-456c-93aa-30607311424b] succeeded in 0.010266908997436985s: {'triggered': 0} +2026-01-20 03:05:28 INFO celery.app.trace Task connecthub.dispatcher.tick[1272ec11-d71c-4529-84eb-52af397033e4] succeeded in 0.00462944500031881s: {'triggered': 0} +2026-01-20 03:06:28 INFO celery.app.trace Task connecthub.dispatcher.tick[911bcd4d-e919-44a6-8529-9744d675246c] succeeded in 0.008815091016003862s: {'triggered': 0} +2026-01-20 03:07:27 INFO celery.app.trace Task connecthub.ldap.sync[3ebf224f-4d59-4b48-a87f-24c810f22bbe] succeeded in 0.01116340298904106s: 0 +2026-01-20 03:07:28 INFO celery.app.trace Task connecthub.dispatcher.tick[6818ece2-cdf1-4653-895d-e07980e39808] succeeded in 0.00293047001468949s: {'triggered': 0} +2026-01-20 03:08:28 INFO celery.app.trace Task connecthub.dispatcher.tick[3f299ee9-0202-454d-93d5-ba62cdd921da] succeeded in 0.013135716988472268s: {'triggered': 0} diff --git a/env.example b/env.example index c56d78c..cf21318 100644 --- a/env.example +++ b/env.example @@ -6,4 +6,26 @@ FERNET_KEY_PATH=/data/fernet.key DEV_MODE=1 LOG_DIR=/data/logs +# Auth / session +AUTH_ENABLED=1 +SESSION_SECRET=change_me_session_secret +SESSION_EXPIRY_MINUTES=1440 +PASSWORD_HASH_ALGO=bcrypt + +# Bootstrap admin +BOOTSTRAP_ADMIN_USERNAME=admin +BOOTSTRAP_ADMIN_GENERATE=1 +BOOTSTRAP_ADMIN_PASS_PATH=/data/admin.pass + +# LDAP +LDAP_URI=ldaps://SHDC01.senasic.cn:636 +LDAP_BIND_DN=dcadmin@senasic.cn +LDAP_BIND_PASSWORD=Jj_Window$ +LDAP_BASE_DN=ou=People,dc=senasic,dc=com +LDAP_USER_FILTER=(uid={sAMAccountName}) +LDAP_GROUP_FILTER=(member={user_dn}) +LDAP_USE_STARTTLS=0 +LDAP_VERIFY_TLS=0 +LDAP_SYNC_INTERVAL_MINUTES=5 + diff --git a/extensions/sync_ehr_to_oa/__init__.py b/extensions/sync_ehr_to_oa/__init__.py new file mode 100644 index 0000000..57132d8 --- /dev/null +++ b/extensions/sync_ehr_to_oa/__init__.py @@ -0,0 +1,6 @@ +"""EHR 到 OA 的同步 API 包。""" + +from extensions.sync_ehr_to_oa.api import SyncEhrToOaApi +from extensions.sync_ehr_to_oa.job import SyncEhrToOaFormJob + +__all__ = ["SyncEhrToOaApi", "SyncEhrToOaFormJob"] diff --git a/extensions/sync_ehr_to_oa/api.py b/extensions/sync_ehr_to_oa/api.py new file mode 100644 index 0000000..08f2c5c --- /dev/null +++ b/extensions/sync_ehr_to_oa/api.py @@ -0,0 +1,329 @@ +from __future__ import annotations + +import logging +from datetime import datetime +from typing import Any + +from app.integrations.ehr import EhrClient + + +logger = logging.getLogger("connecthub.extensions.sync_ehr_to_oa") + + +class SyncEhrToOaApi: + """ + 北森 EHR -> OA 同步 API 封装。 + + 已封装 API: + - 员工与单条任职时间窗滚动查询 + - 组织单元时间窗滚动查询 + - 职务时间窗滚动查询 + """ + + def __init__( + self, + *, + secret_params: dict[str, str], + base_url: str = "https://openapi.italent.cn", + timeout_s: float = 10.0, + retries: int = 2, + retry_backoff_s: float = 0.5, + ) -> None: + self._client = EhrClient( + base_url=base_url, + secret_params=secret_params, + timeout_s=timeout_s, + retries=retries, + retry_backoff_s=retry_backoff_s, + ) + + def close(self) -> None: + self._client.close() + + @staticmethod + def _to_api_datetime(value: datetime | str) -> str: + if isinstance(value, datetime): + return value.strftime("%Y-%m-%dT%H:%M:%S") + s = str(value).strip() + if not s: + raise ValueError("datetime string cannot be empty") + return s + + def get_all_employees_with_record_by_time_window( + self, + *, + stop_time: datetime | str | None = None, + capacity: int = 300, + time_window_query_type: int = 1, + with_disabled: bool = True, + is_with_deleted: bool = True, + max_pages: int = 100000, + ) -> dict[str, Any]: + """ + 滚动查询“员工 + 单条任职”全量结果。 + + 固定起始时间: + - 2001-01-01T00:00:00 + """ + if capacity <= 0 or capacity > 300: + raise ValueError("capacity must be in range [1, 300]") + if max_pages <= 0: + raise ValueError("max_pages must be > 0") + + start_time = "2001-01-01T00:00:00" + stop_time_s = self._to_api_datetime(stop_time or datetime.now()) + + all_data: list[dict[str, Any]] = [] + scroll_id = "" + total = 0 + page = 0 + + while True: + page += 1 + if page > max_pages: + raise RuntimeError(f"scroll pages exceed max_pages={max_pages}") + + body: dict[str, Any] = { + "startTime": start_time, + "stopTime": stop_time_s, + "timeWindowQueryType": time_window_query_type, + "scrollId": scroll_id, + "capacity": capacity, + "withDisabled": with_disabled, + "isWithDeleted": is_with_deleted, + } + + resp = self._client.request( + "POST", + "/TenantBaseExternal/api/v5/Employee/GetByTimeWindow", + json=body, + headers={"Content-Type": "application/json"}, + ) + payload = resp.json() if resp.content else {} + + code = str(payload.get("code", "") or "") + if code != "200": + message = payload.get("message") + raise RuntimeError(f"EHR GetByTimeWindow failed code={code!r} message={message!r}") + + batch = payload.get("data") or [] + if not isinstance(batch, list): + raise RuntimeError("EHR GetByTimeWindow invalid response: data is not a list") + all_data.extend([x for x in batch if isinstance(x, dict)]) + + total_val = payload.get("total") + if total_val is not None: + try: + total = int(total_val) + except (TypeError, ValueError): + total = total + + is_last_data = bool(payload.get("isLastData", False)) + scroll_id = str(payload.get("scrollId", "") or "") + + logger.info( + "EHR GetByTimeWindow page=%s batch=%s total=%s isLastData=%s", + page, + len(batch), + total, + is_last_data, + ) + + if is_last_data: + break + + return { + "startTime": start_time, + "stopTime": stop_time_s, + "total": total, + "pages": page, + "count": len(all_data), + "data": all_data, + "lastScrollId": scroll_id, + } + + def get_all_organizations_by_time_window( + self, + *, + stop_time: datetime | str | None = None, + capacity: int = 300, + time_window_query_type: int = 1, + with_disabled: bool = True, + is_with_deleted: bool = True, + max_pages: int = 100000, + ) -> dict[str, Any]: + """ + 滚动查询“组织单元”全量结果。 + + 固定起始时间: + - 2001-01-01T00:00:00 + """ + if capacity <= 0 or capacity > 300: + raise ValueError("capacity must be in range [1, 300]") + if max_pages <= 0: + raise ValueError("max_pages must be > 0") + + start_time = "2001-01-01T00:00:00" + stop_time_s = self._to_api_datetime(stop_time or datetime.now()) + + all_data: list[dict[str, Any]] = [] + scroll_id = "" + total = 0 + page = 0 + + while True: + page += 1 + if page > max_pages: + raise RuntimeError(f"scroll pages exceed max_pages={max_pages}") + + body: dict[str, Any] = { + "startTime": start_time, + "stopTime": stop_time_s, + "timeWindowQueryType": time_window_query_type, + "scrollId": scroll_id, + "capacity": capacity, + "withDisabled": with_disabled, + "isWithDeleted": is_with_deleted, + } + + resp = self._client.request( + "POST", + "/TenantBaseExternal/api/v5/Organization/GetByTimeWindow", + json=body, + headers={"Content-Type": "application/json"}, + ) + payload = resp.json() if resp.content else {} + + code = str(payload.get("code", "") or "") + if code != "200": + message = payload.get("message") + raise RuntimeError(f"EHR Organization.GetByTimeWindow failed code={code!r} message={message!r}") + + batch = payload.get("data") or [] + if not isinstance(batch, list): + raise RuntimeError("EHR Organization.GetByTimeWindow invalid response: data is not a list") + all_data.extend([x for x in batch if isinstance(x, dict)]) + + total_val = payload.get("total") + if total_val is not None: + try: + total = int(total_val) + except (TypeError, ValueError): + total = total + + is_last_data = bool(payload.get("isLastData", False)) + scroll_id = str(payload.get("scrollId", "") or "") + + logger.info( + "EHR Organization.GetByTimeWindow page=%s batch=%s total=%s isLastData=%s", + page, + len(batch), + total, + is_last_data, + ) + + if is_last_data: + break + + return { + "startTime": start_time, + "stopTime": stop_time_s, + "total": total, + "pages": page, + "count": len(all_data), + "data": all_data, + "lastScrollId": scroll_id, + } + + def get_all_job_posts_by_time_window( + self, + *, + stop_time: datetime | str | None = None, + capacity: int = 300, + time_window_query_type: int = 1, + with_disabled: bool = True, + is_with_deleted: bool = True, + max_pages: int = 100000, + ) -> dict[str, Any]: + """ + 滚动查询“职务”全量结果。 + + 固定起始时间: + - 2001-01-01T00:00:00 + """ + if capacity <= 0 or capacity > 300: + raise ValueError("capacity must be in range [1, 300]") + if max_pages <= 0: + raise ValueError("max_pages must be > 0") + + start_time = "2001-01-01T00:00:00" + stop_time_s = self._to_api_datetime(stop_time or datetime.now()) + + all_data: list[dict[str, Any]] = [] + scroll_id = "" + total = 0 + page = 0 + + while True: + page += 1 + if page > max_pages: + raise RuntimeError(f"scroll pages exceed max_pages={max_pages}") + + body: dict[str, Any] = { + "startTime": start_time, + "stopTime": stop_time_s, + "timeWindowQueryType": time_window_query_type, + "scrollId": scroll_id, + "capacity": capacity, + "withDisabled": with_disabled, + "isWithDeleted": is_with_deleted, + } + + resp = self._client.request( + "POST", + "/TenantBaseExternal/api/v5/JobPost/GetByTimeWindow", + json=body, + headers={"Content-Type": "application/json"}, + ) + payload = resp.json() if resp.content else {} + + code = str(payload.get("code", "") or "") + if code != "200": + message = payload.get("message") + raise RuntimeError(f"EHR JobPost.GetByTimeWindow failed code={code!r} message={message!r}") + + batch = payload.get("data") or [] + if not isinstance(batch, list): + raise RuntimeError("EHR JobPost.GetByTimeWindow invalid response: data is not a list") + all_data.extend([x for x in batch if isinstance(x, dict)]) + + total_val = payload.get("total") + if total_val is not None: + try: + total = int(total_val) + except (TypeError, ValueError): + total = total + + is_last_data = bool(payload.get("isLastData", False)) + scroll_id = str(payload.get("scrollId", "") or "") + + logger.info( + "EHR JobPost.GetByTimeWindow page=%s batch=%s total=%s isLastData=%s", + page, + len(batch), + total, + is_last_data, + ) + + if is_last_data: + break + + return { + "startTime": start_time, + "stopTime": stop_time_s, + "total": total, + "pages": page, + "count": len(all_data), + "data": all_data, + "lastScrollId": scroll_id, + } diff --git a/extensions/sync_ehr_to_oa/job.py b/extensions/sync_ehr_to_oa/job.py new file mode 100644 index 0000000..2bafe89 --- /dev/null +++ b/extensions/sync_ehr_to_oa/job.py @@ -0,0 +1,346 @@ +from __future__ import annotations + +import json +import logging +from typing import Any + +from app.integrations.seeyon import SeeyonClient +from app.jobs.base import BaseJob +from extensions.sync_ehr_to_oa.api import SyncEhrToOaApi + + +logger = logging.getLogger("connecthub.extensions.sync_ehr_to_oa") + + +def _cell_value(cell: Any) -> str: + if isinstance(cell, dict): + v = cell.get("value") + if v is None or str(v).strip() == "": + v = cell.get("showValue") + return str(v or "").strip() + return str(cell or "").strip() + + +def _date_only(s: Any) -> str: + v = str(s or "").strip() + if not v: + return "" + if "T" in v: + return v.split("T", 1)[0] + if " " in v: + return v.split(" ", 1)[0] + return v + + +def _custom_prop_value(custom_props: Any, key: str | None) -> str: + if not key: + return "" + if not isinstance(custom_props, dict): + return "" + raw = custom_props.get(key) + if isinstance(raw, dict): + val = raw.get("value") + if val is None or str(val).strip() == "": + val = raw.get("showValue") + return str(val or "").strip() + return str(raw or "").strip() + + +def _choose_better_record(current: dict[str, Any], candidate: dict[str, Any]) -> dict[str, Any]: + def _score(item: dict[str, Any]) -> str: + record = item.get("recordInfo") or {} + emp = item.get("employeeInfo") or {} + parts = [ + str(record.get("businessModifiedTime") or ""), + str(record.get("modifiedTime") or ""), + str(emp.get("businessModifiedTime") or ""), + str(emp.get("modifiedTime") or ""), + str(record.get("createdTime") or ""), + str(emp.get("createdTime") or ""), + ] + return "|".join(parts) + + return candidate if _score(candidate) >= _score(current) else current + + +class SyncEhrToOaFormJob(BaseJob): + """ + EHR -> OA 无流程表单字段同步。 + + 同步字段: + - 工号(作为唯一对应关系,不写入) + - 所属公司、姓名、研发属性、工作地点、入职日期、离职日期、身份证号、HRBP、汇报人、在离职、域账号 + """ + + job_id = "sync_ehr_to_oa.sync_form" + + def run(self, params: dict[str, Any], secrets: dict[str, Any]) -> dict[str, Any]: + oa_base_url = str(params.get("oa_base_url") or "").strip() + oa_form_code = str(params.get("oa_form_code") or "").strip() + oa_right_id = str(params.get("oa_right_id") or "").strip() + oa_login_name = str(params.get("oa_login_name") or "").strip() + if not oa_base_url: + raise ValueError("public_cfg.oa_base_url is required") + if not oa_form_code: + raise ValueError("public_cfg.oa_form_code is required") + if not oa_right_id: + raise ValueError("public_cfg.oa_right_id is required") + if not oa_login_name: + raise ValueError("public_cfg.oa_login_name is required") + + oa_template_code = str(params.get("oa_template_code") or oa_form_code).strip() + oa_master_table_name = str(params.get("oa_master_table_name") or "").strip() + batch_size = int(params.get("batch_size") or 100) + if batch_size <= 0: + batch_size = 100 + + stop_time = params.get("stop_time") + capacity = int(params.get("capacity") or 300) + do_trigger = params.get("do_trigger") + sender_login_name = params.get("senderLoginName") + sender_login_name = str(sender_login_name).strip() if sender_login_name else None + + rest_user = str(secrets.get("rest_user") or "").strip() + rest_password = str(secrets.get("rest_password") or "").strip() + login_name = secrets.get("loginName") + login_name = str(login_name).strip() if login_name else None + if not rest_user or not rest_password: + raise ValueError("secret_cfg.rest_user and secret_cfg.rest_password are required") + + app_key = str(secrets.get("app_key") or "").strip() + app_secret = str(secrets.get("app_secret") or "").strip() + if not app_key or not app_secret: + raise ValueError("secret_cfg.app_key and secret_cfg.app_secret are required") + + rd_attr_custom_key = str(params.get("rd_attr_custom_key") or "").strip() or None + domain_custom_key = str(params.get("domain_account_custom_key") or "").strip() or None + + seeyon = SeeyonClient(base_url=oa_base_url, rest_user=rest_user, rest_password=rest_password, loginName=login_name) + ehr = SyncEhrToOaApi(secret_params={"app_key": app_key, "app_secret": app_secret}) + try: + # 1) EHR 拉取员工任职与组织 + emp_res = ehr.get_all_employees_with_record_by_time_window(stop_time=stop_time, capacity=capacity) + org_res = ehr.get_all_organizations_by_time_window(stop_time=stop_time, capacity=capacity) + emp_rows = emp_res.get("data") or [] + org_rows = org_res.get("data") or [] + if not isinstance(emp_rows, list): + raise RuntimeError("EHR employee result invalid: data is not list") + if not isinstance(org_rows, list): + raise RuntimeError("EHR organization result invalid: data is not list") + + # 2) 组织映射 + org_by_oid: dict[str, dict[str, Any]] = {} + for o in org_rows: + if not isinstance(o, dict): + continue + oid = str(o.get("oId") or "").strip() + if oid: + org_by_oid[oid] = o + + # 3) 员工按工号归并(同工号保留“最新”记录) + ehr_by_job_no: dict[str, dict[str, Any]] = {} + for item in emp_rows: + if not isinstance(item, dict): + continue + record = item.get("recordInfo") or {} + if not isinstance(record, dict): + continue + job_no = str(record.get("jobNumber") or "").strip() + if not job_no: + continue + existing = ehr_by_job_no.get(job_no) + ehr_by_job_no[job_no] = item if existing is None else _choose_better_record(existing, item) + + # 4) 导出 OA 表单,建立字段映射 + 工号到记录ID映射 + exp_resp = seeyon.export_cap4_form_soap(templateCode=oa_template_code, senderLoginName=sender_login_name, rightId=oa_right_id) + raw = exp_resp.text or "" + payload = json.loads(raw) if raw else {} + outer = payload.get("data") or {} + form = outer.get("data") or {} + if not isinstance(form, dict): + raise RuntimeError("OA export invalid: data.data is not an object") + + definition = form.get("definition") or {} + fields = definition.get("fields") or [] + if not isinstance(fields, list): + raise RuntimeError("OA export invalid: definition.fields is not a list") + + display_to_code: dict[str, str] = {} + for f in fields: + if not isinstance(f, dict): + continue + display = str(f.get("display") or "").strip() + name = str(f.get("name") or "").strip() + if display and name: + display_to_code[display] = name + + needed_displays = [ + "工号", + "所属公司", + "姓名", + "研发属性", + "工作地点", + "入职日期", + "离职日期", + "身份证号", + "HRBP", + "汇报人", + "在离职", + "域账号", + ] + missing = [x for x in needed_displays if x not in display_to_code] + if missing: + raise RuntimeError(f"OA export invalid: missing form fields by display names: {missing}") + + rows = form.get("data") or [] + if not isinstance(rows, list): + raise RuntimeError("OA export invalid: data is not a list") + + if not oa_master_table_name: + for key in ("masterTableName", "masterTable", "masterTableCode"): + v = str((definition or {}).get(key) or "").strip() + if v: + oa_master_table_name = v + break + if not oa_master_table_name and rows: + r0 = rows[0] if isinstance(rows[0], dict) else {} + master_tbl = r0.get("masterTable") + if isinstance(master_tbl, dict): + oa_master_table_name = str(master_tbl.get("name") or "").strip() + if not oa_master_table_name: + raise RuntimeError("public_cfg.oa_master_table_name is required (cannot infer from OA export)") + + job_field_code = display_to_code["工号"] + oa_id_by_job_no: dict[str, int] = {} + for row in rows: + if not isinstance(row, dict): + continue + master = row.get("masterData") or {} + if not isinstance(master, dict): + continue + job_no = _cell_value(master.get(job_field_code)) + if not job_no: + continue + + row_id_raw = row.get("id") + if row_id_raw is None: + row_id_raw = row.get("masterDataId") + if row_id_raw is None: + row_id_raw = master.get("id") + if row_id_raw is None: + continue + try: + row_id = int(str(row_id_raw)) + except Exception: + continue + oa_id_by_job_no[job_no] = row_id + + # 5) 组装批量更新数据 + data_list: list[dict[str, Any]] = [] + not_found_in_oa = 0 + for job_no, item in ehr_by_job_no.items(): + oa_record_id = oa_id_by_job_no.get(job_no) + if oa_record_id is None: + not_found_in_oa += 1 + continue + + emp = item.get("employeeInfo") or {} + rec = item.get("recordInfo") or {} + if not isinstance(emp, dict): + emp = {} + if not isinstance(rec, dict): + rec = {} + + org_oid = str(rec.get("oIdOrganization") or rec.get("oIdDepartment") or "").strip() + org = org_by_oid.get(org_oid, {}) + + company = str((org or {}).get("name") or "") + name = str(emp.get("name") or "") + rd_attr = _custom_prop_value(rec.get("customProperties"), rd_attr_custom_key) or _custom_prop_value( + emp.get("customProperties"), rd_attr_custom_key + ) + place = str(rec.get("place") or "") + entry_date = _date_only(rec.get("entryDate")) + leave_date = _date_only(rec.get("lastWorkDate")) or "2099-12-31" + id_number = str(emp.get("iDNumber") or "") + hrbp = str((org or {}).get("hRBP") or "") + manager = str(rec.get("pOIdEmpAdmin") or "") + is_leaving = "是" if _date_only(rec.get("lastWorkDate")) else "否" + domain_account = _custom_prop_value(emp.get("customProperties"), domain_custom_key) or str(emp.get("_Name") or "") + + fields_payload = [ + {"name": display_to_code["所属公司"], "value": company, "showValue": company}, + {"name": display_to_code["姓名"], "value": name, "showValue": name}, + {"name": display_to_code["研发属性"], "value": rd_attr, "showValue": rd_attr}, + {"name": display_to_code["工作地点"], "value": place, "showValue": place}, + {"name": display_to_code["入职日期"], "value": entry_date, "showValue": entry_date}, + {"name": display_to_code["离职日期"], "value": leave_date, "showValue": leave_date}, + {"name": display_to_code["身份证号"], "value": id_number, "showValue": id_number}, + {"name": display_to_code["HRBP"], "value": hrbp, "showValue": hrbp}, + {"name": display_to_code["汇报人"], "value": manager, "showValue": manager}, + {"name": display_to_code["在离职"], "value": is_leaving, "showValue": is_leaving}, + {"name": display_to_code["域账号"], "value": domain_account, "showValue": domain_account}, + ] + + data_list.append( + { + "masterTable": { + "name": oa_master_table_name, + "record": { + "id": oa_record_id, + "fields": fields_payload, + }, + "changedFields": [f["name"] for f in fields_payload], + }, + "subTables": [], + } + ) + + # 6) 分批执行 batch-update + success_count = 0 + failed_count = 0 + failed_data: dict[str, str] = {} + for i in range(0, len(data_list), batch_size): + chunk = data_list[i : i + batch_size] + resp = seeyon.batch_update_cap4_form_soap( + formCode=oa_form_code, + loginName=oa_login_name, + rightId=oa_right_id, + dataList=chunk, + uniqueFiled=[job_field_code], + doTrigger=bool(do_trigger) if do_trigger is not None else None, + ) + rj = resp.json() if resp.content else {} + code = int(rj.get("code", -1)) + if code != 0: + raise RuntimeError(f"OA batch-update failed code={code} message={rj.get('message')!r}") + + data = rj.get("data") or {} + success_count += int(data.get("successCount", 0) or 0) + failed_count += int(data.get("failedCount", 0) or 0) + fd = data.get("failedData") or {} + if isinstance(fd, dict): + for k, v in fd.items(): + failed_data[str(k)] = str(v) + + logger.info( + "OA batch-update chunk done chunk_size=%s success=%s failed=%s", + len(chunk), + int(data.get("successCount", 0) or 0), + int(data.get("failedCount", 0) or 0), + ) + + return { + "ehr_total_rows": len(emp_rows), + "ehr_distinct_job_numbers": len(ehr_by_job_no), + "oa_existing_job_numbers": len(oa_id_by_job_no), + "prepared_updates": len(data_list), + "not_found_in_oa": not_found_in_oa, + "success_count": success_count, + "failed_count": failed_count, + "failed_data": dict(list(failed_data.items())[:100]), + } + finally: + ehr.close() + seeyon.close() + diff --git a/pyproject.toml b/pyproject.toml index 5adbc02..b9adfcd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ "pydantic>=2.6", "pydantic-settings>=2.1", "cryptography>=41", + "bcrypt>=4.1", + "ldap3>=2.9", "celery>=5.3,<6", "redis>=5", "croniter>=2.0",