Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Options for connect() do not work as intended #645

Open
cb0s opened this issue Dec 23, 2024 · 0 comments
Open

Options for connect() do not work as intended #645

cb0s opened this issue Dec 23, 2024 · 0 comments
Labels
defect Suspected defect such as a bug or regression

Comments

@cb0s
Copy link

cb0s commented Dec 23, 2024

Observed behavior

Hi!
While working on a project with nats I noticed that something doesn't work as intended (or at least how I understand it). I wanted to use nats.connect() without reconnects on startup (try once and fail), however, I wasn't able to achieve it. My test code for that was more or less a mesh-up from different parts of the official python client documentation. Strangely enough, connect_timeout didn't seem to have an effect either, only error_cb did (I was able to get notified on connection errors). The following code should reproduce this behaviour:

import nats
import asyncio

async def main():
    connecting_options = {
        "allow_reconnect": False,       # only try to connect once
        "max_reconnect_attempts": 0,    # test
        "connect_timeout": 1,           # fail after 1 sec.
    }
    nc = await nats.connect(servers="localhost:4222", **connecting_options)
    await nc.close()

if __name__ == "__main__":
    asyncio.run(main())

I hope you will be able to help me or at least point me to the right direction. I also noticed that the documentation on these parameters is sparse (#600 seems to try to fix that though), but I feel that after reading this and this and manually inspecting the source code, the code above should fail after 1 second. If I misunderstood anything, please let me know :)

Expected behavior

I want the code to throw an unhandled exception which can be handled manually, later. Additionally I expect the code to take only 1 sec to fail instead of the default 2 sec.

This all can be useful to notify a testing client about the failed connection attempt for instance.

Server and client version

nats-server is not available as the client is intended to fail
pip show nats-py shows: Version: 2.9.0

Host environment

Running on Windows 10 Host in WSL - Ubuntu 24.04 - Python 3.12.

Steps to reproduce

See script above with the specified dependencies.

@cb0s cb0s added the defect Suspected defect such as a bug or regression label Dec 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
defect Suspected defect such as a bug or regression
Projects
None yet
Development

No branches or pull requests

1 participant