mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-20 08:20:02 +02:00
Merge pull request #204 from tiqi-group/fix/task_finishing_gracefully
fix: return result of task after finishing gracefully
This commit is contained in:
commit
192075057f
@ -169,7 +169,7 @@ class Task(pydase.data_service.data_service.DataService, Generic[R]):
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
await self._func()
|
return await self._func()
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
logger.info("Task '%s' was cancelled", self._func_name)
|
logger.info("Task '%s' was cancelled", self._func_name)
|
||||||
raise
|
raise
|
||||||
|
@ -436,3 +436,24 @@ async def test_exit_on_failure_exceeding_rate_limit(
|
|||||||
await asyncio.sleep(0.5)
|
await asyncio.sleep(0.5)
|
||||||
assert "os.kill called with signal=" in caplog.text
|
assert "os.kill called with signal=" in caplog.text
|
||||||
assert "Task 'my_task' encountered an exception" in caplog.text
|
assert "Task 'my_task' encountered an exception" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio(scope="function")
|
||||||
|
async def test_gracefully_finishing_task(
|
||||||
|
monkeypatch: pytest.MonkeyPatch, caplog: LogCaptureFixture
|
||||||
|
) -> None:
|
||||||
|
class MyService(pydase.DataService):
|
||||||
|
@task()
|
||||||
|
async def my_task(self) -> None:
|
||||||
|
print("Hello")
|
||||||
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
|
service_instance = MyService()
|
||||||
|
state_manager = StateManager(service_instance)
|
||||||
|
DataServiceObserver(state_manager)
|
||||||
|
service_instance.my_task.start()
|
||||||
|
|
||||||
|
await asyncio.sleep(0.05)
|
||||||
|
assert service_instance.my_task.status == TaskStatus.RUNNING
|
||||||
|
await asyncio.sleep(0.1)
|
||||||
|
assert service_instance.my_task.status == TaskStatus.NOT_RUNNING
|
||||||
|
Loading…
x
Reference in New Issue
Block a user