mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
import asyncio
|
|
|
|
from integrations.gitlab.gitlab_service import SaaSGitLabService
|
|
from pydantic import SecretStr
|
|
|
|
from openhands.core.logger import openhands_logger as logger
|
|
from openhands.server.types import AppMode
|
|
|
|
|
|
def schedule_gitlab_repo_sync(
|
|
user_id: str, keycloak_access_token: SecretStr | None = None
|
|
) -> None:
|
|
"""Schedule a background sync of GitLab repositories and webhook tracking.
|
|
|
|
Because the outer call is already a background task, we instruct the service
|
|
to store repository data synchronously (store_in_background=False) to avoid
|
|
nested background tasks while still keeping the overall operation async.
|
|
"""
|
|
|
|
async def _run():
|
|
try:
|
|
service = SaaSGitLabService(
|
|
external_auth_id=user_id, external_auth_token=keycloak_access_token
|
|
)
|
|
await service.get_all_repositories(
|
|
'pushed', AppMode.SAAS, store_in_background=False
|
|
)
|
|
except Exception:
|
|
logger.warning('gitlab_repo_sync_failed', exc_info=True)
|
|
|
|
asyncio.create_task(_run())
|