Hi Freddy,
unfortunately pytest-concurrent is fundamentally broken for managing
fixtures and other details,
as things are my suggestion is to avoid it.
-- Ronny
Am 24.10.19 um 15:22 schrieb Rietdijk:
Hi,
I think having a simple `pytest-multiprocessing` or
`pytest-concurrent` would be extremely useful and cover a lot of
people's use cases and would strongly recommend to have that as a
separate plugin from something bigger that does feature hooks and/or
remote execution.. It seems though as such a package already exists,
https://github.com/reverbc/pytest-concurrent, which offers --concmode
and --concworkers instead.
Frederik
On Thu, Oct 24, 2019 at 2:46 PM Bruno Oliveira <nicodde...@gmail.com
<mailto:nicodde...@gmail.com>> wrote:
Hi everyone,
For some time now |execnet| has been in maintenance only mode, and
even so very few people are willing to maintain it; lately just
myself and I’m not a good choice given that I don’t know the
codebase at all, plus I have tons on my plate already. This poses
a problem because often we have bug reports or feature requests in
|pytest-xdist| which would require fixing or improving |execnet|,
and are currently left without solution.
Ronny and I have on occasion discussed the possibility of changing
|execnet|‘s backend , with the current contenders being
|multiprocessing| for local distribution and |mitogen| for remote
distribution.
I would like to write down some thoughts and gather opinions from
the mailing list members.
multiprocessing
Aside from not needing to maintain |execnet| anymore, being able
to use |multiprocessing| would bring several benefits:
*
|pytest -s| would work just fine, because |multiprocessing|
does not use |stdout/stderr| for communication. This is a
often requested feature but which we can’t (with current
expertise) implement on |execnet|.
*
It would automatically support anything that can be picked to
be transmitted across the wire. Currently execnet does not
support custom user types and some builtins (frozen sets for
example).
Without |execnet| we would lose the ability of running the tests
in different interpreter versions, but I believe this has been
supplanted by |tox| in the ecosystem.
mitogen
Using |mitogen| for remote execution would provide automatic
bootstrap of the Python environment, which is not currently
supported by |xdist|‘s ssh remote execution, greatly limiting its
usefulness in real-time scenarios.
This is Ronny’s idea and he can add more here if wanted.
pytest-xdist2?
All the changes mentioned above would break backward compatibility
*hard*, because details of the |execnet| implementation are
currently exposed to users in the command-line:
|pytest -d --tx popen//python |
And in several hooks:
|def pytest_xdist_newgateway(gateway): """ called on new raw
gateway creation. """ |
(|gateway| is an |execnet| object)
To incorporate the new backends, we would need to severely break
both command-line and existing hooks. Given the level of breakage
this could cause, just bumping the major version in this case
doesn’t seem enough, it would be a disservice to users given that
probably nobody pins pytest-xdist to |<=2|, and it would break the
world with hard to understand error messages once a first major
release was released.
Because of this, we have been discussing creating a new package,
|pytest-xdist2| (other suggestions are welcome), without any
backward compatibility guarantees with |pytest-xdist|.
|pytest-xdist2| would, at first, only support local test
distribution using |multiprocessing| (|-n| flag), no new hooks,
and no remote execution. I’ve made a proof of concept here:
https://github.com/pytest-dev/pytest-xdist/pull/479
So it definitely seems possible. One immediate benefit is that the
proof of concept above supports |pytest -s| already, and can
transfer anything that’s pickled over the wire.
So I would like to know what people think of the above ideas, if
they are good/bad, and/or suggest alternatives that we are not
seeing right now.
Ronny, please feel free to add to this email and correct anything
I got wrong.
Cheers,
Bruno
_______________________________________________
pytest-dev mailing list
pytest-dev@python.org <mailto:pytest-dev@python.org>
https://mail.python.org/mailman/listinfo/pytest-dev
_______________________________________________
pytest-dev mailing list
pytest-dev@python.org
https://mail.python.org/mailman/listinfo/pytest-dev
_______________________________________________
pytest-dev mailing list
pytest-dev@python.org
https://mail.python.org/mailman/listinfo/pytest-dev