Requesting a variant when the AnyVar service isn't running and an AnyVar HTTP Client is being used causes a 500 server error
INFO 127.0.0.1:62599 - "GET /variant_counts?assemblyId=GRCh38&referenceName=22&start=10510104&referenceBases=G&alternateBases=A HTTP/1.1"
500
ERROR Exception in ASGI application
Traceback (most recent call last):
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connection.py", line 204, in _new_conn
sock = connection.create_connection(
(self._dns_host, self.port),
...<2 lines>...
socket_options=self.socket_options,
)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/util/connection.py", line 85, in create_connection
raise err
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/util/connection.py", line 73, in create_connection
sock.connect(sa)
~~~~~~~~~~~~^^^^
ConnectionRefusedError: [Errno 61] Connection refused
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
conn,
...<10 lines>...
**response_kw,
)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connectionpool.py", line 493, in _make_request
conn.request(
~~~~~~~~~~~~^
method,
^^^^^^^
...<6 lines>...
enforce_content_length=enforce_content_length,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connection.py", line 500, in request
self.endheaders()
~~~~~~~~~~~~~~~^^
File "/Users/jss009/.local/share/uv/python/cpython-3.13.2-macos-aarch64-none/lib/python3.13/http/client.py", line 1333, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jss009/.local/share/uv/python/cpython-3.13.2-macos-aarch64-none/lib/python3.13/http/client.py", line 1093, in _send_output
self.send(msg)
~~~~~~~~~^^^^^
File "/Users/jss009/.local/share/uv/python/cpython-3.13.2-macos-aarch64-none/lib/python3.13/http/client.py", line 1037, in send
self.connect()
~~~~~~~~~~~~^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connection.py", line 331, in connect
self.sock = self._new_conn()
~~~~~~~~~~~~~~^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connection.py", line 219, in _new_conn
raise NewConnectionError(
self, f"Failed to establish a new connection: {e}"
) from e
urllib3.exceptions.NewConnectionError: HTTPConnection(host='localhost', port=8000): Failed to establish a new connection: [Errno 61] Connection refused
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/requests/adapters.py", line 644, in send
resp = conn.urlopen(
method=request.method,
...<9 lines>...
chunked=chunked,
)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/urllib3/util/retry.py", line 519, in increment
raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /variation (Caused by NewConnectionError("HTTPConnection(host='localhost', port=8000): Failed to establish a new connection: [Errno 61] Connection refused"))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/jss009/code/anyvlm/src/anyvlm/anyvar/http_client.py", line 53, in _make_http_request
response = requests.request(
method=method, url=url, json=payload, timeout=self.request_timeout
)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/requests/adapters.py", line 677, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /variation (Caused by NewConnectionError("HTTPConnection(host='localhost', port=8000): Failed to establish a new connection: [Errno 61] Connection refused"))
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/fastapi/applications.py", line 1139, in __call__
await super().__call__(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
raise exc
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
await route.handle(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
await self.app(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 120, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 430, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 318, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/anyio/to_thread.py", line 61, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2525, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "/Users/jss009/code/anyvlm/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
result = context.run(func, *args)
File "/Users/jss009/code/anyvlm/src/anyvlm/restapi/vlm.py", line 302, in variant_counts
caf_data: list[AnyVlmCohortAlleleFrequencyResult] = get_caf(
~~~~~~~^
anyvar_client,
^^^^^^^^^^^^^^
...<5 lines>...
alternateBases,
^^^^^^^^^^^^^^^
)
^
File "/Users/jss009/code/anyvlm/src/anyvlm/functions/get_caf.py", line 54, in get_caf
vrs_variation = anyvar_client.get_registered_allele(gnomad_vcf, assembly)
File "/Users/jss009/code/anyvlm/src/anyvlm/anyvar/http_client.py", line 94, in get_registered_allele
response = self._make_http_request(HTTPMethod.POST, url, payload)
File "/Users/jss009/code/anyvlm/src/anyvlm/anyvar/http_client.py", line 61, in _make_http_request
raise AnyVarClientConnectionError from e
anyvlm.anyvar.base_client.AnyVarClientConnectionError
Describe the bug
Requesting a variant when the AnyVar service isn't running and an AnyVar HTTP Client is being used causes a 500 server error
Steps to reproduce
on the server console, for the case
Acceptance Criteria
Possible reason(s)/Suggested Fix
No response
Environment & Version
main