You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've faced interesting issue, when using Silk in Django projects, using pickle (https://docs.python.org/3/library/pickle.html) and also trying to save request.body as binary data in DB (MySQL) - BinaryField in Django
During tests I've face these:
Traceback (most recent call last):
File "/venv/lib/python3.10/site-packages/django/utils/encoding.py", line 70, in force_str
s = str(s, encoding, errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
--- PROJECT MODULES AND FUNCTIONS ---
resp = self.client.post(
File "/venv/lib/python3.10/site-packages/django/test/client.py", line 852, in post
response = super().post(
File "/venv/lib/python3.10/site-packages/django/test/client.py", line 441, in post
return self.generic(
File "/venv/lib/python3.10/site-packages/django/test/client.py", line 541, in generic
return self.request(**r)
File "/venv/lib/python3.10/site-packages/django/test/client.py", line 810, in request
self.check_exception(response)
File "/venv/lib/python3.10/site-packages/django/test/client.py", line 663, in check_exception
raise exc_value
File "/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/venv/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 103, in view
return self.dispatch(request, *args, **kwargs)
File "/venv/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/venv/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/venv/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/venv/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "venv/lib/python3.10/site-packages/rest_framework/decorators.py", line 50, in handler
return func(*args, **kwargs)
File "/django/response.py", line 289, in wrapper
return func(request, *args, **kwargs)
--- PROJECT MODULES AND FUNCTIONS ---
File "/venv/lib/python3.10/site-packages/django/db/models/base.py", line 812, in save
self.save_base(
File "/venv/lib/python3.10/site-packages/django/db/models/base.py", line 863, in save_base
updated = self._save_table(
File "/venv/lib/python3.10/site-packages/django/db/models/base.py", line 976, in _save_table
updated = self._do_update(
File "/venv/lib/python3.10/site-packages/django/db/models/base.py", line 1040, in _do_update
return filtered._update(values) > 0
File "/venv/lib/python3.10/site-packages/django/db/models/query.py", line 1215, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "/venv/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql
cursor = super().execute_sql(result_type)
File "/venv/lib/python3.10/site-packages/silk/sql.py", line 80, in execute_sql
sql_query = q % tuple(force_str(param) for param in params)
File "/venv/lib/python3.10/site-packages/silk/sql.py", line 80, in <genexpr>
sql_query = q % tuple(force_str(param) for param in params)
File "/venv/lib/python3.10/site-packages/django/utils/encoding.py", line 74, in force_str
raise DjangoUnicodeDecodeError(s, *e.args)
django.utils.encoding.DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte. You passed in b'\x80\x04\x95\x98\x01\x00\x00\x00\x00\x00\x00\x8c\x10requests.cookies\x94\x8c\x11RequestsCookieJar\x94\x93\x94)\x81\x94}\x94(\x8c\x07_policy\x94\x8c\x0ehttp.cookiejar\x94\x8c\x13DefaultCookiePolicy\x94\x93\x94)\x81\x94}\x94(\x8c\x08netscape\x94\x88\x8c\x07rfc2965\x94\x89\x8c\x13rfc2109_as_netscape\x94N\x8c\x0chide_cookie2\x94\x89\x8c\rstrict_domain\x94\x89\x8c\x1bstrict_rfc2965_unverifiable\x94\x88\x8c\x16strict_ns_unverifiable\x94\x89\x8c\x10strict_ns_domain\x94K\x00\x8c\x1cstrict_ns_set_initial_dollar\x94\x89\x8c\x12strict_ns_set_path\x94\x89\x8c\x10secure_protocols\x94\x8c\x05https\x94\x8c\x03wss\x94\x86\x94\x8c\x10_blocked_domains\x94)\x8c\x10_allowed_domains\x94Nub\x8c\x08_cookies\x94}\x94ub.' (<class 'bytes'>)
So Silk is trying to decode any content in SQL queries, how to switch off these for binary data?
I know about SilkyIgnorePaths, but its not very reliable to find all paths with binary data recording. I think it will be better to somehow wrap around bad decoding tries.
The text was updated successfully, but these errors were encountered:
Hi there!
I've faced interesting issue, when using Silk in Django projects, using pickle (https://docs.python.org/3/library/pickle.html) and also trying to save request.body as binary data in DB (MySQL) - BinaryField in Django
During tests I've face these:
So Silk is trying to decode any content in SQL queries, how to switch off these for binary data?
I know about SilkyIgnorePaths, but its not very reliable to find all paths with binary data recording. I think it will be better to somehow wrap around bad decoding tries.
The text was updated successfully, but these errors were encountered: