UnicodeEncodeError in Python application
Andrew Clayton
andrew at digital-domain.net
Wed Dec 21 14:41:47 UTC 2022
On Fri, 16 Dec 2022 13:28:24 +0100
Tobias Genannt <tobias.genannt at kappa-velorum.net> wrote:
> Hello,
Hi!,
> I'm seeing a crash in a Python application with Unit 1.29 which is not
> happening in Unit 1.28. I'm not sure if I have to change the
> configuration for this version bump because I didn't find an entry in
No, you shouldn't.
> the changelog which would point to the problem.
> This is the stack trace:
[...]
> print(f"\U0001f9ec loaded config '{path}'")
> UnicodeEncodeError: 'ascii' codec can't encode character '\U0001f9ec' in
> position 0: ordinal not in range(128)
OK, so looks like a unicode issue.
> You can find the contents of the problematic file (last strack trace
> entry) here:
> https://github.com/tobiasge/netbox-docker/blob/new-unit/docker/configuration.docker.py
I did quickly try reproducing this using current unit master and Python
3.11
{
"listeners": {
"[::1]:8080": {
"pass": "applications/python"
}
},
"applications": {
"python": {
"type": "python",
"path": "/srv/unit/python/app/",
"module": "app"
}
}
}
$ cat /srv/unit/python/app/app.py
def application(environ, start_response):
start_response("200 OK", [("Content-Type", "text/plain")])
print("⚠️ test\n");
return (b"Hello, Python on Unit!\n")
which works OK.
There aren't that many Python changes since 1.28.0
$ git log --oneline 1.28.0.. src/python/
6dae517e Python: Added "prefix" to configuration.
491d0f70 Python: Added support for Python 3.11.
6902cd14 Refactored functions that set WSGI variables.
3b970ed9 Removed dead code.
40d75c94 Optimization for the "--no-unix-sockets" case.
b0098336 Renamed a couple of members of nxt_unit_request_t.
If you're up for it, could you try reverting 491d0f70 ("Python: Added
support for Python 3.11.")?
$ git clone https://github.com/nginx/unit.git
$ cd unit
$ git revert -n 491d0f70
(ignore the warnings...)
build unit and the python module etc and test.
If things are still broken
$ git reset --hard
$ git revert -n 6902cd14
build/install and test again.
If things are still broken, you could repeat the above with the other
commits.
Alternatively, if you have a simple bare minimum reproducer...
> Greetings,
> Tobias
Cheers,
Andrew
More information about the unit
mailing list