diff --git a/selfprivacy_api/graphql/subscriptions/jobs.py b/selfprivacy_api/graphql/subscriptions/jobs.py index 26dd2aa..82f5f29 100644 --- a/selfprivacy_api/graphql/subscriptions/jobs.py +++ b/selfprivacy_api/graphql/subscriptions/jobs.py @@ -23,29 +23,25 @@ class ApiJob: @strawberry.type class JobSubscription: - @strawberry.subscription(permission_classes=[IsAuthenticated]) + @strawberry.subscription() async def job_subscription(self) -> AsyncGenerator[typing.List[ApiJob], None]: is_updated = True def callback(jobs: typing.List[Job]): nonlocal is_updated is_updated = True Jobs().add_observer(callback) - try: - while True: - if is_updated: - is_updated = False - yield [ ApiJob( - name=job.name, - description=job.description, - status=job.status.name, - status_text=job.status_text, - progress=job.progress, - created_at=job.created_at, - updated_at=job.updated_at, - finished_at=job.finished_at, - error=job.error, - result=job.result, - ) for job in Jobs().get_jobs() ] - except GeneratorExit: - Jobs().remove_observer(callback) - return + while True: + if is_updated: + is_updated = False + yield [ ApiJob( + name=job.name, + description=job.description, + status=job.status.name, + status_text=job.status_text, + progress=job.progress, + created_at=job.created_at, + updated_at=job.updated_at, + finished_at=job.finished_at, + error=job.error, + result=job.result, + ) for job in Jobs().get_jobs() ]