allensdk.brain_observatory.ecephys.ecephys_project_api.http_engine module

class allensdk.brain_observatory.ecephys.ecephys_project_api.http_engine.AsyncHttpEngine(scheme: str, host: str, session: ClientSession | None = None, **kwargs)[source]

Bases: HttpEngine

property session
stream(route: str) Callable[[Callable[[AsyncIterator[bytes]], Awaitable[None]]], Awaitable[None]][source]
Returns a coroutine which
  • makes an http request

  • exposes internally an asynchronous iterator over the response

  • takes a callback parameter, which should consume the iterator.

Parameters:
route

the http route (under this object’s host) to request against.

Notes

To use this method, you will need an appropriate consumer. For instance, If you want to write the streamed data to a local file, you can use write_bytes_from_coroutine.

Examples

>>> engine = AsyncHttpEngine("http", "examplehost")
>>> stream_coro = engine.stream("example/route")
>>> write_bytes_from_coroutine("example/file/path.txt", stream_coro)
static write_bytes(path: str, coroutine: Callable[[Callable[[AsyncIterator[bytes]], Awaitable[None]]], Awaitable[None]])[source]
class allensdk.brain_observatory.ecephys.ecephys_project_api.http_engine.HttpEngine(scheme: str, host: str, timeout: float = 1200, chunksize: int = 10240, **kwargs)[source]

Bases: object

stream(route)[source]

Makes an http request and returns an iterator over the response.

Parameters:
route

the http route (under this object’s host) to request against.

static write_bytes(path: str, stream: Iterable[bytes])[source]
allensdk.brain_observatory.ecephys.ecephys_project_api.http_engine.write_bytes_from_coroutine(path: str, coroutine: Callable[[Callable[[AsyncIterator[bytes]], Awaitable[None]]], Awaitable[None]])[source]

Utility for streaming http from an asynchronous requester to a file.

Parameters:
path

Write to this file

coroutine
The source of the data. Needs to have a specific structure, namely:
  • the first-position parameter of the coroutine ought to accept a

callback. This callback ought to itself be awaitable. - within the coroutine, this callback ought to be called with a single argument. That single argument should be an asynchronous iterator.

Please see AsyncHttpEngine.stream (and AsyncHttpEngine._stream_coroutine) for an example.

allensdk.brain_observatory.ecephys.ecephys_project_api.http_engine.write_from_stream(path: str, stream: Iterable[bytes])[source]

Write bytes to a file from an iterator

Parameters:
path

write to this file

stream

iterable yielding bytes to be written