[GH-ISSUE #16632] issue: unreachable webhook blocks the UI for all users #56652

Closed
opened 2026-05-05 19:53:11 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @athoik on GitHub (Aug 14, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/16632

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Git Clone

Open WebUI Version

v0.6.23 (dev branch)

Ollama Version (if applicable)

No response

Operating System

Debian 12

Browser (if applicable)

Firefox 141.0.3

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

When a new user is signed up, OpenWebUI is posting an event on configured webhook.
The webhook event should not block or delay the user experience.

Actual Behavior

When a new user is signed up, OpenWebUI is posting an event on configured webhook.

The webhook event is blocking the interface for all users, until a timeout occurs, make really bad experience for users.

Actually until the webhook event post succeed (or timeout) all operations on the OpenWebUI are blocked, users believe that OpenWebUI is broken.

Steps to Reproduce

  1. Configure the Webhook to https://example.com:8443/webhook
  2. Signup a new user
  3. Webhook event is "fired"
  4. Webhook is unreachable/delaying, and the whole UI is blocked.
  5. Timeout occurs and operations continue or admin should restart OpenWebUI service

Between insert_new_auth and post_webhook there is a huge delay and everything is blocked!

2025-08-14 20:11:48.298 | INFO     | open_webui.models.auths:insert_new_auth:108 - insert_new_auth
2025-08-14 20:25:18.101 | ERROR    | open_webui.utils.webhook:post_webhook:59 - HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable'))

Logs & Screenshots

2025-08-14 20:11:18.991 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37538 - "OPTIONS /api/config HTTP/1.1" 200
2025-08-14 20:11:19.003 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37544 - "GET /api/config HTTP/1.1" 200
2025-08-14 20:11:19.186 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37538 - "GET /static/favicon.png HTTP/1.1" 404
2025-08-14 20:11:19.190 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37544 - "GET /static/favicon-dark.png HTTP/1.1" 404
2025-08-14 20:11:20.845 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37544 - "GET /oauth/microsoft/login HTTP/1.1" 302
2025-08-14 20:11:47.583 | INFO     | httpx._client:_send_single_request:1740 - HTTP Request: POST https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token "HTTP/1.1 200 OK"
2025-08-14 20:11:48.025 | WARNING  | open_webui.utils.oauth:_process_picture_url:328 - Failed to fetch profile picture from https://graph.microsoft.com/v1.0/me/photo/$value
2025-08-14 20:11:48.298 | INFO     | open_webui.models.auths:insert_new_auth:108 - insert_new_auth


2025-08-14 20:11:48.298 | INFO     | open_webui.models.auths:insert_new_auth:108 - insert_new_auth
2025-08-14 20:25:18.101 | ERROR    | open_webui.utils.webhook:post_webhook:59 - HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
Traceback (most recent call last):

  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connection.py", line 198, in _new_conn
    sock = connection.create_connection(
           │          └ <function create_connection at 0x7e2d3ee867a0>
           └ <module 'urllib3.util.connection' from '/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/connectio...
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/connection.py", line 85, in create_connection
    raise err
          └ None
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/connection.py", line 73, in create_connection
    sock.connect(sa)
    │    │       └ ('2600:1408:ec00:36::1736:7f24', 8443, 0, 0)
    │    └ <method 'connect' of '_socket.socket' objects>
    └ <socket.socket [closed] fd=-1, family=10, type=1, proto=6>

OSError: [Errno 101] Network is unreachable


The above exception was the direct cause of the following exception:


Traceback (most recent call last):

  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
               │    └ <function HTTPConnectionPool._make_request at 0x7e2d3ec5a2a0>
               └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 488, in _make_request
    raise new_e
          └ NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Err...
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 464, in _make_request
    self._validate_conn(conn)
    │    │              └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>
    │    └ <function HTTPSConnectionPool._validate_conn at 0x7e2d3ec5a840>
    └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn
    conn.connect()
    │    └ <function HTTPSConnection.connect at 0x7e2d3ec26020>
    └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connection.py", line 704, in connect
    self.sock = sock = self._new_conn()
    │    │             │    └ <function HTTPConnection._new_conn at 0x7e2d3ec25620>
    │    │             └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>
    │    └ None
    └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connection.py", line 213, in _new_conn
    raise NewConnectionError(
          └ <class 'urllib3.exceptions.NewConnectionError'>

urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable


The above exception was the direct cause of the following exception:


Traceback (most recent call last):

  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
           │    └ <function HTTPConnectionPool.urlopen at 0x7e2d3ec5a480>
           └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 841, in urlopen
    retries = retries.increment(
              │       └ <function Retry.increment at 0x7e2d3eec91c0>
              └ Retry(total=0, connect=None, read=False, redirect=None, status=None)
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/retry.py", line 519, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
          │             │      │    │            └ NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Err...
          │             │      │    └ NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Err...
          │             │      └ '/webhook'
          │             └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750>
          └ <class 'urllib3.exceptions.MaxRetryError'>

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable'))


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "<string>", line 1, in <module>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/spawn.py", line 122, in spawn_main
    exitcode = _main(fd, parent_sentinel)
               │     │   └ 4
               │     └ 7
               └ <function _main at 0x7e2d420faa20>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/spawn.py", line 135, in _main
    return self._bootstrap(parent_sentinel)
           │    │          └ 4
           │    └ <function BaseProcess._bootstrap at 0x7e2d42004ae0>
           └ <SpawnProcess name='SpawnProcess-2' parent=12764 started>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
    │    └ <function BaseProcess.run at 0x7e2d42004040>
    └ <SpawnProcess name='SpawnProcess-2' parent=12764 started>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
    │    │        │    │        │    └ {'config': <uvicorn.config.Config object at 0x7e2d41555b50>, 'target': <bound method Server.run of <uvicorn.server.Server obj...
    │    │        │    │        └ <SpawnProcess name='SpawnProcess-2' parent=12764 started>
    │    │        │    └ ()
    │    │        └ <SpawnProcess name='SpawnProcess-2' parent=12764 started>
    │    └ <function subprocess_started at 0x7e2d413d8d60>
    └ <SpawnProcess name='SpawnProcess-2' parent=12764 started>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
    target(sockets=sockets)
    │              └ [<socket.socket fd=3, family=2, type=1, proto=0, laddr=('0.0.0.0', 8080)>]
    └ <bound method Server.run of <uvicorn.server.Server object at 0x7e2d41018b50>>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
    return asyncio.run(self.serve(sockets=sockets))
           │       │   │    │             └ [<socket.socket fd=3, family=2, type=1, proto=0, laddr=('0.0.0.0', 8080)>]
           │       │   │    └ <function Server.serve at 0x7e2d413b7920>
           │       │   └ <uvicorn.server.Server object at 0x7e2d41018b50>
           │       └ <function run at 0x7e2d41730360>
           └ <module 'asyncio' from '/home/user/.conda/envs/open-webui/lib/python3.11/asyncio/__init__.py'>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           │      │   └ <coroutine object Server.serve at 0x7e2d42042c50>
           │      └ <function Runner.run at 0x7e2d4179c4a0>
           └ <asyncio.runners.Runner object at 0x7e2d410185d0>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           │    │     │                  └ <Task pending name='Task-1' coro=<Server.serve() running at /home/user/.conda/envs/open-webui/lib/python3.11/site-packages/uv...
           │    │     └ <cyfunction Loop.run_until_complete at 0x7e2d412c7c60>
           │    └ <uvloop.Loop running=True closed=False debug=False>
           └ <asyncio.runners.Runner object at 0x7e2d410185d0>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
          │    │   │      │                      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7e2c21b9dd00>
          │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │    └ <starlette_compress.CompressMiddleware object at 0x7e2d405f6d90>
          └ <open_webui.main.RedirectMiddleware object at 0x7e2c2c0b2050>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
    return await self._zstd(scope, receive, send)
                 │    │     │      │        └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7e2c21b9dd00>
                 │    │     │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
                 │    │     └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
                 │    └ <member '_zstd' of 'CompressMiddleware' objects>
                 └ <starlette_compress.CompressMiddleware object at 0x7e2d405f6d90>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
    await self.app(scope, receive, wrapper)
          │    │   │      │        └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7e2c21b9e340>
          │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │    └ <member 'app' of 'ZstdResponder' objects>
          └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7e2c23b209c0>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
          │                            │    │    │     │      │        └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7e2c21b9e340>
          │                            │    │    │     │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │                            │    │    │     └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │                            │    │    └ <starlette.requests.Request object at 0x7e2c21f06390>
          │                            │    └ <fastapi.routing.APIRouter object at 0x7e2c23f48710>
          │                            └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7e2c2c0b1cd0>
          └ <function wrap_app_handling_exceptions at 0x7e2d3e8b4720>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
          │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0>
          │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          └ <fastapi.routing.APIRouter object at 0x7e2c23f48710>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
          │    │                │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0>
          │    │                │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │    │                └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │    └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7e2c23f48710>>
          └ <fastapi.routing.APIRouter object at 0x7e2c23f48710>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
          │     │      │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0>
          │     │      │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │     │      └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │     └ <function Route.handle at 0x7e2d3e8b5d00>
          └ APIRoute(path='/oauth/{provider}/callback', name='oauth_callback', methods=['GET'])
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
          │    │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0>
          │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │    └ <function request_response.<locals>.app at 0x7e2c233ea2a0>
          └ APIRoute(path='/oauth/{provider}/callback', name='oauth_callback', methods=['GET'])
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
          │                            │    │        │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0>
          │                            │    │        │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │                            │    │        └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          │                            │    └ <starlette.requests.Request object at 0x7e2c21f07c10>
          │                            └ <function request_response.<locals>.app.<locals>.app at 0x7e2c21b9ee80>
          └ <function wrap_app_handling_exceptions at 0x7e2d3e8b4720>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
          │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9cb80>
          │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0>
          │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl...
          └ <function request_response.<locals>.app.<locals>.app at 0x7e2c21b9ee80>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
                     │ └ <starlette.requests.Request object at 0x7e2c21f07c10>
                     └ <function get_request_handler.<locals>.app at 0x7e2c233ea160>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                         └ <function run_endpoint_function at 0x7e2d3e8b7b00>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
                 │         │      └ {'provider': 'microsoft', 'request': <starlette.requests.Request object at 0x7e2c21f07c10>, 'response': <starlette.responses....
                 │         └ <function oauth_callback at 0x7e2c233ea0c0>
                 └ Dependant(path_params=[ModelField(field_info=Path(PydanticUndefined), name='provider', mode='validation')], query_params=[], ...

  File "/home/user/open-webui/backend/open_webui/main.py", line 1839, in oauth_callback
    return await oauth_manager.handle_callback(request, provider, response)
                 │             │               │        │         └ <starlette.responses.Response object at 0x7e2c21f052d0>
                 │             │               │        └ 'microsoft'
                 │             │               └ <starlette.requests.Request object at 0x7e2c21f07c10>
                 │             └ <function OAuthManager.handle_callback at 0x7e2c2c0cf740>
                 └ <open_webui.utils.oauth.OAuthManager object at 0x7e2c2c331f50>

  File "/home/user/open-webui/backend/open_webui/utils/oauth.py", line 501, in handle_callback
    post_webhook(
    └ <function post_webhook at 0x7e2c2f32e520>

> File "/home/user/open-webui/backend/open_webui/utils/webhook.py", line 54, in post_webhook
    r = requests.post(url, json=payload)
        │        │    │         └ {'action': 'signup', 'message': 'New user signed up: Athanassios Oikonomou', 'user': '{"id":"03aa56fc-7c73-4e52-9df7-0f0d0ef0...
        │        │    └ 'https://example.com:8443/webhook'
        │        └ <function post at 0x7e2d3ea0a0c0>
        └ <module 'requests' from '/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/__init__.py'>

  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/api.py", line 115, in post
    return request("post", url, data=data, json=json, **kwargs)
           │               │         │          │       └ {}
           │               │         │          └ {'action': 'signup', 'message': 'New user signed up: Athanassios Oikonomou', 'user': '{"id":"03aa56fc-7c73-4e52-9df7-0f0d0ef0...
           │               │         └ None
           │               └ 'https://example.com:8443/webhook'
           └ <function request at 0x7e2d3ec07380>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           │       │              │           │      └ {'data': None, 'json': {'action': 'signup', 'message': 'New user signed up: Athanassios Oikonomou', 'user': '{"id":"03aa56fc-...
           │       │              │           └ 'https://example.com:8443/webhook'
           │       │              └ 'post'
           │       └ <function Session.request at 0x7e2d3ea09580>
           └ <requests.sessions.Session object at 0x7e2c22bd3850>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           │    │    │       └ {'timeout': None, 'allow_redirects': True, 'proxies': OrderedDict([('no', 'something.example.com')]), 'stream': False, 'verify...
           │    │    └ <PreparedRequest [POST]>
           │    └ <function Session.send at 0x7e2d3ea09a80>
           └ <requests.sessions.Session object at 0x7e2c22bd3850>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        │       │    │          └ {'timeout': None, 'proxies': OrderedDict([('no', 'something.example.com')]), 'stream': False, 'verify': True, 'cert': None}
        │       │    └ <PreparedRequest [POST]>
        │       └ <function HTTPAdapter.send at 0x7e2d3ea08e00>
        └ <requests.adapters.HTTPAdapter object at 0x7e2c21f25ed0>
  File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/adapters.py", line 700, in send
    raise ConnectionError(e, request=request)
          │                          └ <PreparedRequest [POST]>
          └ <class 'requests.exceptions.ConnectionError'>

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
2025-08-14 20:25:18.262 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:39676 - "OPTIONS /ollama/api/version HTTP/1.1" 200
2025-08-14 20:25:18.263 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:39690 - "OPTIONS /api/v1/users/user/settings HTTP/1.1" 200
2025-08-14 20:25:18.267 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:46348 - "GET /oauth/microsoft/callback?code=1.AS8A...MSb-qNw&state=g...H&session_state=0...6f HTTP/1.1" 307
2025-08-14 20:25:18.283 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:52406 - "GET /api/config HTTP/1.1" 200
2025-08-14 20:25:18.301 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:51882 - "OPTIONS /api/v1/auths/ HTTP/1.1" 200
2025-08-14 20:25:18.314 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:52406 - "GET /api/v1/auths/ HTTP/1.1" 200
2025-08-14 20:25:18.322 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:51882 - "OPTIONS /api/config HTTP/1.1" 200
2025-08-14 20:25:18.329 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:52406 - "GET /api/config HTTP/1.1" 200
2025-08-14 20:25:18.342 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:51882 - "OPTIONS /api/v1/chats/archived?page=1&order_by=updated_at&direction=desc HTTP/1.1" 200

Additional Information

I think wehhook should never affect the user experience. Actualy webhools should registed in database and asyncronously with retries must be send.

Ping https://github.com/open-webui/open-webui/pull/16426

Originally created by @athoik on GitHub (Aug 14, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/16632 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Git Clone ### Open WebUI Version v0.6.23 (dev branch) ### Ollama Version (if applicable) _No response_ ### Operating System Debian 12 ### Browser (if applicable) Firefox 141.0.3 ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior When a new user is signed up, OpenWebUI is posting an event on configured webhook. The webhook event should not block or delay the user experience. ### Actual Behavior When a new user is signed up, OpenWebUI is posting an event on configured webhook. The webhook event is blocking the interface for all users, until a timeout occurs, make really bad experience for users. Actually until the webhook event post succeed (or timeout) all operations on the OpenWebUI are blocked, users believe that OpenWebUI is broken. ### Steps to Reproduce 1. Configure the Webhook to **https://example.com:8443/webhook** 2. Signup a new user 3. Webhook event is "fired" 4. Webhook is unreachable/delaying, and the whole UI is blocked. 5. Timeout occurs and operations continue or admin should restart OpenWebUI service Between insert_new_auth and post_webhook there is a huge delay and everything is blocked! ``` 2025-08-14 20:11:48.298 | INFO | open_webui.models.auths:insert_new_auth:108 - insert_new_auth 2025-08-14 20:25:18.101 | ERROR | open_webui.utils.webhook:post_webhook:59 - HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable')) ``` ### Logs & Screenshots ``` 2025-08-14 20:11:18.991 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37538 - "OPTIONS /api/config HTTP/1.1" 200 2025-08-14 20:11:19.003 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37544 - "GET /api/config HTTP/1.1" 200 2025-08-14 20:11:19.186 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37538 - "GET /static/favicon.png HTTP/1.1" 404 2025-08-14 20:11:19.190 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37544 - "GET /static/favicon-dark.png HTTP/1.1" 404 2025-08-14 20:11:20.845 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:37544 - "GET /oauth/microsoft/login HTTP/1.1" 302 2025-08-14 20:11:47.583 | INFO | httpx._client:_send_single_request:1740 - HTTP Request: POST https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token "HTTP/1.1 200 OK" 2025-08-14 20:11:48.025 | WARNING | open_webui.utils.oauth:_process_picture_url:328 - Failed to fetch profile picture from https://graph.microsoft.com/v1.0/me/photo/$value 2025-08-14 20:11:48.298 | INFO | open_webui.models.auths:insert_new_auth:108 - insert_new_auth 2025-08-14 20:11:48.298 | INFO | open_webui.models.auths:insert_new_auth:108 - insert_new_auth 2025-08-14 20:25:18.101 | ERROR | open_webui.utils.webhook:post_webhook:59 - HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable')) Traceback (most recent call last): File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connection.py", line 198, in _new_conn sock = connection.create_connection( │ └ <function create_connection at 0x7e2d3ee867a0> └ <module 'urllib3.util.connection' from '/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/connectio... File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/connection.py", line 85, in create_connection raise err └ None File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/connection.py", line 73, in create_connection sock.connect(sa) │ │ └ ('2600:1408:ec00:36::1736:7f24', 8443, 0, 0) │ └ <method 'connect' of '_socket.socket' objects> └ <socket.socket [closed] fd=-1, family=10, type=1, proto=6> OSError: [Errno 101] Network is unreachable The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 787, in urlopen response = self._make_request( │ └ <function HTTPConnectionPool._make_request at 0x7e2d3ec5a2a0> └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 488, in _make_request raise new_e └ NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Err... File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 464, in _make_request self._validate_conn(conn) │ │ └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390> │ └ <function HTTPSConnectionPool._validate_conn at 0x7e2d3ec5a840> └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1093, in _validate_conn conn.connect() │ └ <function HTTPSConnection.connect at 0x7e2d3ec26020> └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connection.py", line 704, in connect self.sock = sock = self._new_conn() │ │ │ └ <function HTTPConnection._new_conn at 0x7e2d3ec25620> │ │ └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390> │ └ None └ <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connection.py", line 213, in _new_conn raise NewConnectionError( └ <class 'urllib3.exceptions.NewConnectionError'> urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/adapters.py", line 667, in send resp = conn.urlopen( │ └ <function HTTPConnectionPool.urlopen at 0x7e2d3ec5a480> └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/connectionpool.py", line 841, in urlopen retries = retries.increment( │ └ <function Retry.increment at 0x7e2d3eec91c0> └ Retry(total=0, connect=None, read=False, redirect=None, status=None) File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/urllib3/util/retry.py", line 519, in increment raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] │ │ │ │ └ NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Err... │ │ │ └ NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Err... │ │ └ '/webhook' │ └ <urllib3.connectionpool.HTTPSConnectionPool object at 0x7e2c21b0c750> └ <class 'urllib3.exceptions.MaxRetryError'> urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable')) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/spawn.py", line 122, in spawn_main exitcode = _main(fd, parent_sentinel) │ │ └ 4 │ └ 7 └ <function _main at 0x7e2d420faa20> File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/spawn.py", line 135, in _main return self._bootstrap(parent_sentinel) │ │ └ 4 │ └ <function BaseProcess._bootstrap at 0x7e2d42004ae0> └ <SpawnProcess name='SpawnProcess-2' parent=12764 started> File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap self.run() │ └ <function BaseProcess.run at 0x7e2d42004040> └ <SpawnProcess name='SpawnProcess-2' parent=12764 started> File "/home/user/.conda/envs/open-webui/lib/python3.11/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {'config': <uvicorn.config.Config object at 0x7e2d41555b50>, 'target': <bound method Server.run of <uvicorn.server.Server obj... │ │ │ │ └ <SpawnProcess name='SpawnProcess-2' parent=12764 started> │ │ │ └ () │ │ └ <SpawnProcess name='SpawnProcess-2' parent=12764 started> │ └ <function subprocess_started at 0x7e2d413d8d60> └ <SpawnProcess name='SpawnProcess-2' parent=12764 started> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started target(sockets=sockets) │ └ [<socket.socket fd=3, family=2, type=1, proto=0, laddr=('0.0.0.0', 8080)>] └ <bound method Server.run of <uvicorn.server.Server object at 0x7e2d41018b50>> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run return asyncio.run(self.serve(sockets=sockets)) │ │ │ │ └ [<socket.socket fd=3, family=2, type=1, proto=0, laddr=('0.0.0.0', 8080)>] │ │ │ └ <function Server.serve at 0x7e2d413b7920> │ │ └ <uvicorn.server.Server object at 0x7e2d41018b50> │ └ <function run at 0x7e2d41730360> └ <module 'asyncio' from '/home/user/.conda/envs/open-webui/lib/python3.11/asyncio/__init__.py'> File "/home/user/.conda/envs/open-webui/lib/python3.11/asyncio/runners.py", line 190, in run return runner.run(main) │ │ └ <coroutine object Server.serve at 0x7e2d42042c50> │ └ <function Runner.run at 0x7e2d4179c4a0> └ <asyncio.runners.Runner object at 0x7e2d410185d0> File "/home/user/.conda/envs/open-webui/lib/python3.11/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /home/user/.conda/envs/open-webui/lib/python3.11/site-packages/uv... │ │ └ <cyfunction Loop.run_until_complete at 0x7e2d412c7c60> │ └ <uvloop.Loop running=True closed=False debug=False> └ <asyncio.runners.Runner object at 0x7e2d410185d0> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7e2c21b9dd00> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ └ <starlette_compress.CompressMiddleware object at 0x7e2d405f6d90> └ <open_webui.main.RedirectMiddleware object at 0x7e2c2c0b2050> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__ return await self._zstd(scope, receive, send) │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7e2c21b9dd00> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ └ <member '_zstd' of 'CompressMiddleware' objects> └ <starlette_compress.CompressMiddleware object at 0x7e2d405f6d90> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__ await self.app(scope, receive, wrapper) │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7e2c21b9e340> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ └ <member 'app' of 'ZstdResponder' objects> └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7e2c23b209c0> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) │ │ │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7e2c21b9e340> │ │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ │ │ └ <starlette.requests.Request object at 0x7e2c21f06390> │ │ └ <fastapi.routing.APIRouter object at 0x7e2c23f48710> │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7e2c2c0b1cd0> └ <function wrap_app_handling_exceptions at 0x7e2d3e8b4720> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0> │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... └ <fastapi.routing.APIRouter object at 0x7e2c23f48710> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ await self.middleware_stack(scope, receive, send) │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7e2c23f48710>> └ <fastapi.routing.APIRouter object at 0x7e2c23f48710> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ └ <function Route.handle at 0x7e2d3e8b5d00> └ APIRoute(path='/oauth/{provider}/callback', name='oauth_callback', methods=['GET']) File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0> │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ └ <function request_response.<locals>.app at 0x7e2c233ea2a0> └ APIRoute(path='/oauth/{provider}/callback', name='oauth_callback', methods=['GET']) File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) │ │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9c7c0> │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... │ │ └ <starlette.requests.Request object at 0x7e2c21f07c10> │ └ <function request_response.<locals>.app.<locals>.app at 0x7e2c21b9ee80> └ <function wrap_app_handling_exceptions at 0x7e2d3e8b4720> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7e2c21b9cb80> │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7e2c21b9d3a0> │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8080), 'cl... └ <function request_response.<locals>.app.<locals>.app at 0x7e2c21b9ee80> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/starlette/routing.py", line 73, in app response = await f(request) │ └ <starlette.requests.Request object at 0x7e2c21f07c10> └ <function get_request_handler.<locals>.app at 0x7e2c233ea160> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app raw_response = await run_endpoint_function( └ <function run_endpoint_function at 0x7e2d3e8b7b00> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function return await dependant.call(**values) │ │ └ {'provider': 'microsoft', 'request': <starlette.requests.Request object at 0x7e2c21f07c10>, 'response': <starlette.responses.... │ └ <function oauth_callback at 0x7e2c233ea0c0> └ Dependant(path_params=[ModelField(field_info=Path(PydanticUndefined), name='provider', mode='validation')], query_params=[], ... File "/home/user/open-webui/backend/open_webui/main.py", line 1839, in oauth_callback return await oauth_manager.handle_callback(request, provider, response) │ │ │ │ └ <starlette.responses.Response object at 0x7e2c21f052d0> │ │ │ └ 'microsoft' │ │ └ <starlette.requests.Request object at 0x7e2c21f07c10> │ └ <function OAuthManager.handle_callback at 0x7e2c2c0cf740> └ <open_webui.utils.oauth.OAuthManager object at 0x7e2c2c331f50> File "/home/user/open-webui/backend/open_webui/utils/oauth.py", line 501, in handle_callback post_webhook( └ <function post_webhook at 0x7e2c2f32e520> > File "/home/user/open-webui/backend/open_webui/utils/webhook.py", line 54, in post_webhook r = requests.post(url, json=payload) │ │ │ └ {'action': 'signup', 'message': 'New user signed up: Athanassios Oikonomou', 'user': '{"id":"03aa56fc-7c73-4e52-9df7-0f0d0ef0... │ │ └ 'https://example.com:8443/webhook' │ └ <function post at 0x7e2d3ea0a0c0> └ <module 'requests' from '/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/__init__.py'> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) │ │ │ │ └ {} │ │ │ └ {'action': 'signup', 'message': 'New user signed up: Athanassios Oikonomou', 'user': '{"id":"03aa56fc-7c73-4e52-9df7-0f0d0ef0... │ │ └ None │ └ 'https://example.com:8443/webhook' └ <function request at 0x7e2d3ec07380> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) │ │ │ │ └ {'data': None, 'json': {'action': 'signup', 'message': 'New user signed up: Athanassios Oikonomou', 'user': '{"id":"03aa56fc-... │ │ │ └ 'https://example.com:8443/webhook' │ │ └ 'post' │ └ <function Session.request at 0x7e2d3ea09580> └ <requests.sessions.Session object at 0x7e2c22bd3850> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/sessions.py", line 589, in request resp = self.send(prep, **send_kwargs) │ │ │ └ {'timeout': None, 'allow_redirects': True, 'proxies': OrderedDict([('no', 'something.example.com')]), 'stream': False, 'verify... │ │ └ <PreparedRequest [POST]> │ └ <function Session.send at 0x7e2d3ea09a80> └ <requests.sessions.Session object at 0x7e2c22bd3850> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/sessions.py", line 703, in send r = adapter.send(request, **kwargs) │ │ │ └ {'timeout': None, 'proxies': OrderedDict([('no', 'something.example.com')]), 'stream': False, 'verify': True, 'cert': None} │ │ └ <PreparedRequest [POST]> │ └ <function HTTPAdapter.send at 0x7e2d3ea08e00> └ <requests.adapters.HTTPAdapter object at 0x7e2c21f25ed0> File "/home/user/.conda/envs/open-webui/lib/python3.11/site-packages/requests/adapters.py", line 700, in send raise ConnectionError(e, request=request) │ └ <PreparedRequest [POST]> └ <class 'requests.exceptions.ConnectionError'> requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=8443): Max retries exceeded with url: /webhook (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7e2c21b59390>: Failed to establish a new connection: [Errno 101] Network is unreachable')) 2025-08-14 20:25:18.262 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:39676 - "OPTIONS /ollama/api/version HTTP/1.1" 200 2025-08-14 20:25:18.263 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:39690 - "OPTIONS /api/v1/users/user/settings HTTP/1.1" 200 2025-08-14 20:25:18.267 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:46348 - "GET /oauth/microsoft/callback?code=1.AS8A...MSb-qNw&state=g...H&session_state=0...6f HTTP/1.1" 307 2025-08-14 20:25:18.283 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:52406 - "GET /api/config HTTP/1.1" 200 2025-08-14 20:25:18.301 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:51882 - "OPTIONS /api/v1/auths/ HTTP/1.1" 200 2025-08-14 20:25:18.314 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:52406 - "GET /api/v1/auths/ HTTP/1.1" 200 2025-08-14 20:25:18.322 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:51882 - "OPTIONS /api/config HTTP/1.1" 200 2025-08-14 20:25:18.329 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:52406 - "GET /api/config HTTP/1.1" 200 2025-08-14 20:25:18.342 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:51882 - "OPTIONS /api/v1/chats/archived?page=1&order_by=updated_at&direction=desc HTTP/1.1" 200 ``` ### Additional Information I think wehhook should never affect the user experience. Actualy webhools should registed in database and asyncronously with retries must be send. Ping https://github.com/open-webui/open-webui/pull/16426
GiteaMirror added the bug label 2026-05-05 19:53:11 -05:00
Author
Owner

@tjbck commented on GitHub (Aug 14, 2025):

Should be addressed with f1c28455ad668ed9a1edfa3e6cf9405ddadaab6f!

<!-- gh-comment-id:3189734824 --> @tjbck commented on GitHub (Aug 14, 2025): Should be addressed with f1c28455ad668ed9a1edfa3e6cf9405ddadaab6f!
Author
Owner

@athoik commented on GitHub (Aug 15, 2025):

Should be addressed with f1c2845!

Confirmed! Async is not blocking other users any more!

<!-- gh-comment-id:3190561546 --> @athoik commented on GitHub (Aug 15, 2025): > Should be addressed with [f1c2845](https://github.com/open-webui/open-webui/commit/f1c28455ad668ed9a1edfa3e6cf9405ddadaab6f)! Confirmed! Async is not blocking other users any more!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#56652