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
Python 3.7->3.7: refusing to serve stdlib module 'pathlib' #440
Comments
This isn't a bug, it's another confusing error message. Importer should
|
Also seeing this for master/client with same Python version (3.6.7): #!/usr/bin/env python3.6
import os
import sys
from pathlib import Path
import mitogen
def install_app():
os.system('ls {}'.format(Path.home()))
@mitogen.main()
def main(router):
if len(sys.argv) != 2:
print(__doc__)
sys.exit(1)
context = router.ssh(hostname=sys.argv[1])
# context = router.fork()
context.call(install_app) When run: Traceback (most recent call last):
File "mitogen_demo.py", line 13, in <module>
@mitogen.main()
File "/home/james/.local/lib/python3.6/site-packages/mitogen/__init__.py", line 118, in wrapper
func,
File "/home/james/.local/lib/python3.6/site-packages/mitogen/core.py", line 561, in _profile_hook
return func(*args)
File "/home/james/.local/lib/python3.6/site-packages/mitogen/utils.py", line 159, in run_with_router
return func(router, *args, **kwargs)
File "mitogen_demo.py", line 21, in main
context.call(install_app)
File "/home/james/.local/lib/python3.6/site-packages/mitogen/parent.py", line 1759, in call
return self.default_call_chain.call(fn, *args, **kwargs)
File "/home/james/.local/lib/python3.6/site-packages/mitogen/parent.py", line 1718, in call
return receiver.get().unpickle(throw_dead=False)
File "/home/james/.local/lib/python3.6/site-packages/mitogen/core.py", line 835, in unpickle
raise obj
mitogen.core.CallError: exceptions.ImportError: The Mitogen master process was unable to serve u'pathlib'. It may be a native Python extension, or it may be missing entirely. Check the importer debug logs on the master for more information.
File "<stdin>", line 3099, in _dispatch_one
File "<stdin>", line 3086, in _parse_request
File "<stdin>", line 596, in import_module
File "<stdin>", line 1357, in load_module
File "<string>", line 1, in <module>
File "master:mitogen_demo.py", line 4, in <module>
from pathlib import Path
File "<stdin>", line 1330, in load_module
Edit: relevant debug logs:
|
My issue ended up being user error; I should've realized the hashbang at the beginning of my script isn't conveyed to the client. When I invoked the example script above and added a version printout, I saw that it was being run with Python 2.7:
Using the context = router.ssh(
hostname=sys.argv[1], python_path=['/usr/bin/env', 'python3']) |
At the very least, the active Python version should be reported in the logs generated by the bootstrap. There is a separate bug (#478) open for propagating the real ModuleResponder error to the target and then back as a CallError to the master. It's convoluted, but the result should be easier to understand failures of this sort |
* origin/dmw: Whoops, merge together lgtm.yml and .lgtm.yml issue #440: log Python version during bootstrap. docs: update changelog
* origin/v028: (383 commits) Bump version for release. docs: update Changelog for 0.2.8. issue #627: add test and tweak Reaper behaviour. docs: lots more changelog concision docs: changelog concision docs: more changelog tweaks docs: reorder chapters docs: versionless <title> docs: update supported Ansible version, mention unsupported features docs: changelog fixes/tweaks issue #590: update Changelog. issue #621: send ADD_ROUTE earlier and add test for early logging. issue #590: whoops, import missing test modules issue #590: rework ParentEnumerationMethod to recursively handle bad modules issue #627: reduce the default pool size in a child to 2. tests: add a few extra service tests. docs: some more hyperlink joy docs: more hyperlinks docs: add domainrefs plugin to make link aliases everywhere \o/ docs: link IS_DEAD in changelog docs: tweaks to better explain changelog race issue #533: update routing to account for DEL_ROUTE propagation race tests: use defer_sync() Rather than defer() + ancient sync_with_broker() tests: one case from doas_test was invoking su tests: hide memory-mapped files from lsof output issue #615: remove meaningless test issue #625: ignore SIGINT within MuxProcess issue #625: use exec() instead of subprocess in mitogen_ansible_playbook issue #615: regression test issue #615: update Changelog. issue #615: ensure 4GB max_message_size is configured for task workers. issue #615: update Changelog. issue #615: route a dead message to recipients when no reply is expected issue #615: fetch_file() might be called with AnsibleUnicode. issue #615: redirect 'fetch' action to 'mitogen_fetch'. issue #615: extricate slurp brainwrong from mitogen_fetch issue #615: ansible: import Ansible fetch.py action plug-in issue #533: include object identity of Stream in repr() docs: lots more changelog issue #595: add buildah to docs and changelog. docs: a few more internals.rst additions ci: update to Ansible 2.8.3 tests: another random string changed in 2.8.3 tests: fix sudo_flags_failure for Ansible 2.8.3 ci: fix procps command line format warning Whoops, merge together lgtm.yml and .lgtm.yml issue #440: log Python version during bootstrap. docs: update changelog issue #558: disable test on OSX to cope with boundless mediocrity issue #558, #582: preserve remote tmpdir if caller did not supply one issue #613: must await 'exit' and 'disconnect' in wait=False test Import LGTM config to disable some stuff Fix up another handful of LGTM errors. tests: work around AnsibleModule.run_command() race. docs: mention another __main__ safeguard docs: tweaks formatting error docs: make Sphinx install soft fail on Python 2. issue #598: allow disabling preempt in terraform issue #598: update Changelog. issue #605: update Changelog. issue #605: ansible: share a sem_t instead of a pthread_mutex_t issue #613: add tests for all the weird shutdown methods Add mitogen.core.now() and use it everywhere; closes #614. docs: move decorator docs into core.py and use autodecorator preamble_size: make it work on Python 3. docs: upgrade Sphinx to 2.1.2, require Python 3 to build docs. docs: fix Sphinx warnings, add LogHandler, more docstrings docs: tidy up some Changelog text issue #615: fix up FileService tests for new logic issue #615: another Py3x fix. issue #615: Py3x fix. issue #615: update Changelog. issue #615: use FileService for target->controll file transfers issue #482: another Py3 fix ci: try removing exclude: to make Azure jobs work again compat: fix Py2.4 SyntaxError issue #482: remove 'ssh' from checked processes ci: Py3 fix issue #279: add one more test for max_message_size issue #482: ci: add stray process checks to all jobs tests: fix format string error core: MitogenProtocol.is_privileged was not set in children issue #482: tests: fail DockerMixin tests if stray processes exist docs: update Changelog. issue #586: update Changelog. docs: update Changelog. [security] core: undirectional routing wasn't respected in some cases docs: tidy up Select.all() issue #612: update Changelog. master: fix TypeError pkgutil: fix Python3 compatibility parent: use protocol for getting remote_id docs: merge signals.rst into internals.rst os_fork: do not attempt to cork the active thread. parent: fix get_log_level() for split out loggers. issue #547: fix service_test failures. issue #547: update Changelog. issue #547: core/service: race/deadlock-free service pool init docs: update Changelog. ...
Adding followup check in hangup handler
The text was updated successfully, but these errors were encountered: