#20185 closed Bug (invalid)
TypeError: unicode argument expected, got 'str' on core management validation (used gunicorn)
Reported by: | Thiago Avelino | Owned by: | nobody |
---|---|---|---|
Component: | Python 2 | Version: | 1.5 |
Severity: | Normal | Keywords: | gunicorn |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Used gunicorn 0.17.2
Error:
2013-04-03 02:37:08 [71497] [INFO] Starting gunicorn 0.17.2 2013-04-03 02:37:08 [71497] [INFO] Listening at: http://127.0.0.1:8000 (71497) 2013-04-03 02:37:08 [71497] [INFO] Using worker: sync 2013-04-03 02:37:08 [71500] [INFO] Booting worker with pid: 71500 2013-04-03 02:37:10 [71500] [ERROR] Exception in worker process: Traceback (most recent call last): File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker worker.init_process() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process self.wsgi = self.app.wsgi() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi self.callable = self.load() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 101, in load return mod.make_wsgi_application() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 36, in make_wsgi_application if get_validation_errors(s): File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/django/core/management/validation.py", line 150, in get_validation_errors e.add(opts, "'%s' has a relation with model %s, which has either not been installed or is abstract." % (f.name, f.rel.to)) File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/django/core/management/validation.py", line 19, in add self.outfile.write(self.style.ERROR(force_str(u"%s: %s\n" % (context, error)))) TypeError: unicode argument expected, got 'str' Traceback (most recent call last): File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker worker.init_process() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process self.wsgi = self.app.wsgi() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi self.callable = self.load() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 101, in load return mod.make_wsgi_application() File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 36, in make_wsgi_application if get_validation_errors(s): File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/django/core/management/validation.py", line 150, in get_validation_errors e.add(opts, "'%s' has a relation with model %s, which has either not been installed or is abstract." % (f.name, f.rel.to)) File "/Users/avelino/.virtualenvs/yacows.virgula/lib/python2.7/site-packages/django/core/management/validation.py", line 19, in add self.outfile.write(self.style.ERROR(force_str(u"%s: %s\n" % (context, error)))) TypeError: unicode argument expected, got 'str' 2013-04-03 02:37:10 [71500] [INFO] Worker exiting (pid: 71500) 2013-04-03 02:37:10 [71497] [INFO] Shutting down: Master 2013-04-03 02:37:10 [71497] [INFO] Reason: Worker failed to boot.
if it bug, the following correction: https://github.com/django/django/pull/983
Change History (5)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
This is a bug inside gunicorn, most likely caused by the use of io.StringIO
instead of StringIO.StringIO
which breaks under python 2.
This line in particular: https://github.com/benoitc/gunicorn/blob/0.17.2/gunicorn/app/django_wsgi.py#L13
comment:3 by , 11 years ago
Does anyone know the cause of this bug? Whether or not it is Gunicorn's fault or a configuration error?
comment:5 by , 11 years ago
Thank you very much for pointing me to the django_wsgi line that was the problem.
For me run_gunicorn (gunicorn/app/django_wsgi.py) was trying to output error messages for one of my installed apps using the wrong StringIO. I reversed the try/except order for import of StringIO (to favor python2) and then also fixed the model inheritance in the broken app. You can do either to avoid this error (don't have validation errors or use the right StringIO to log/output the validation errors).
This is the sort of error message that gunicorn is using StringIO to try to log. I was trying to ForeignKey to the abstract model contrib.auth.User:
One or more models did not validate:
agile.organization: 'user' has an m2m relation with model User, which has either not been installed or is abstract.
Reproduce the problem
Install:
gunicorn==0.17.2
django==1.5.1
Run:
$ gunicorn_django