execute with timeout
Project description
timeout-executor
how to install
$ pip install timeout_executor
# or
$ pip install "timeout_executor[uvloop]"
# or
$ pip install "timeout_executor[jinja]"
how to use
from __future__ import annotations
import time
import anyio
from timeout_executor import AsyncResult, TimeoutExecutor
def sample_sync_func(x: float) -> str:
time.sleep(x)
return "done"
async def sample_async_func(x: float) -> str:
await anyio.sleep(x)
return "done"
def main() -> None:
executor = TimeoutExecutor(2)
result = executor.apply(sample_sync_func, 10)
assert isinstance(result, AsyncResult)
try:
value = result.result()
except Exception as exc:
assert isinstance(exc, TimeoutError)
result = executor.apply(sample_async_func, 1)
assert isinstance(result, AsyncResult)
value = result.result()
assert value == "done"
result = executor.apply(lambda: "done")
assert isinstance(result, AsyncResult)
value = result.result()
assert value == "done"
async def async_main() -> None:
executor = TimeoutExecutor(2)
result = await executor.delay(sample_sync_func, 10)
assert isinstance(result, AsyncResult)
try:
value = await result.delay()
except Exception as exc:
assert isinstance(exc, TimeoutError)
result = await executor.delay(sample_async_func, 1)
assert isinstance(result, AsyncResult)
value = await result.delay()
assert value == "done"
result = await executor.delay(lambda: "done")
assert isinstance(result, AsyncResult)
value = await result.delay()
assert value == "done"
if __name__ == "__main__":
main()
anyio.run(async_main)
License
MIT, see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
timeout_executor-0.8.0.tar.gz
(13.9 kB
view hashes)
Built Distribution
Close
Hashes for timeout_executor-0.8.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa221fa5e4ccbfe294ea9d1a276eab907f832ed1ca6de95f0b55cd2944dadaec |
|
MD5 | 01b8d9b98536ae290b7e84275c30c407 |
|
BLAKE2b-256 | 825196ef2291c1a029103d9d6114f28fe9585ee9ace029a426f7f1e5abf95801 |