-
Notifications
You must be signed in to change notification settings - Fork 342
feat(core): Add run_containers
function in utils.py to run several containers
#896
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
base: main
Are you sure you want to change the base?
Conversation
…containers at the same time
if we add this can we name it consistently with any one of the other implementations, thanks |
Hm, could you like any of the other implementations? Can't find them @alexanderankin |
I'm admittedly not sure this should be part of the library, when the caller can achieve the same result explicitly with the same amount of code.
Becomes
|
… On Mon, Oct 13, 2025 at 5:23 PM Ryan Hoban ***@***.***> wrote:
*rhoban13* left a comment (testcontainers/testcontainers-python#896)
<#896 (comment)>
I'm admittedly not sure this should be part of the library, when the
caller can achieve the same result explicitly with the same amount of code.
with run_containers(
PostgresContainer(network=network),
PostgresContainer(image='postgres:16', network=network),
) as containers:
c1, c2 = containers
Becomes
with contextlib.ExitStack() as stack:
c1, c2 = stack.enter_context(container) for container in (
PostgresContainer(network=network),
PostgresContainer(image='postgres:16', network=network)
)
—
Reply to this email directly, view it on GitHub
<#896 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACECGJEPB3G3BZVLOQQEFKT3XQJ3PAVCNFSM6AAAAACIKPW4UOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTGOJZGEYDQNZSGE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
… On Tue, Oct 14, 2025 at 8:23 PM David Ankin ***@***.***> wrote:
https://www.javadoc.io/doc/org.testcontainers/testcontainers/1.12.1/org/testcontainers/lifecycle/Startables.html
On Mon, Oct 13, 2025 at 5:23 PM Ryan Hoban ***@***.***>
wrote:
> *rhoban13* left a comment (testcontainers/testcontainers-python#896)
> <#896 (comment)>
>
> I'm admittedly not sure this should be part of the library, when the
> caller can achieve the same result explicitly with the same amount of code.
>
> with run_containers(
> PostgresContainer(network=network),
> PostgresContainer(image='postgres:16', network=network),
> ) as containers:
> c1, c2 = containers
>
> Becomes
>
> with contextlib.ExitStack() as stack:
> c1, c2 = stack.enter_context(container) for container in (
> PostgresContainer(network=network),
> PostgresContainer(image='postgres:16', network=network)
> )
>
> —
> Reply to this email directly, view it on GitHub
> <#896 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ACECGJEPB3G3BZVLOQQEFKT3XQJ3PAVCNFSM6AAAAACIKPW4UOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTGOJZGEYDQNZSGE>
> .
> You are receiving this because you were mentioned.Message ID:
> ***@***.***>
>
|
Ahhhh, I see what you're looking to achieve. I could definitely see the parallel container startup being a really useful feature. In it's current form, that's not what this PR proposes. I suspect such an implementation and would warrant some discussion on which of python's plethora of ways to achieve parallelism makes most sense here. |
This utils method runs containers on the same context manager. This ensures that the passed containers are run in order and cleaned up.
The main use case is to be able to run code after all containers have started. I need this to create CrateDB clusters.
Practical example: run containers inside a network and clean up the network (network can only be cleaned up after all containers using it are stopped)