You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@skywalking.apache.org by 何于豪 <he...@wisecotech.com> on 2023/12/07 03:33:07 UTC

Sky walking python sw_pymysql plugin error

hello there:
python version 3.8.17
pymysql version  1.0.0
platform:both linux and windows can reproduce
error stack
Traceback (most recent call last):
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 2091, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 2076, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_flask.py", line 87, in _sw_handle_exception
    return _handle_exception(this, e)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_flask.py", line 65, in _sw_full_dispatch_request
    resp = _full_dispatch_request(this)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 1519, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_flask.py", line 79, in _sw_handle_user_exception
    return _handle_user_exception(this, e)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "D:\code\model_algo\api\controller\job.py", line 53, in job_result
    if result.status == "FAILURE":
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\result.py", line 473, in state
    return self._get_task_meta()['status']
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\result.py", line 412, in _get_task_meta
    return self._maybe_set_cache(self.backend.get_task_meta(self.id))
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\base.py", line 386, in get_task_meta
    meta = self._get_task_meta_for(task_id)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\__init__.py", line 53, in _inner
    return fun(*args, **kwargs)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\__init__.py", line 122, in _get_task_meta_for
    session = self.ResultSession()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\__init__.py", line 96, in ResultSession
    return session_manager.session_factory(
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\session.py", line 59, in session_factory
    self.prepare_models(engine)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\session.py", line 54, in prepare_models
    ResultModelBase.metadata.create_all(engine)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\sql\schema.py", line 4917, in create_all
    bind._run_ddl_visitor(
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3227, in _run_ddl_visitor
    with self.begin() as conn:
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3143, in begin
    conn = self.connect(close_with_result=close_with_result)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3315, in connect
    return self._connection_cls(self, close_with_result=close_with_result)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 96, in __init__
    else engine.raw_connection()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3394, in raw_connection
    return self._wrap_pool_connect(self.pool.connect, _connection)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3361, in _wrap_pool_connect
    return fn()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 320, in connect
    return _ConnectionFairy._checkout(self)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 884, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 486, in checkout
    rec = pool._do_get()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
    return self._create_connection()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 266, in _create_connection
    return _ConnectionRecord(self)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 381, in __init__
    self.__connect()
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 689, in __connect
    pool.dispatch.connect.for_modify(
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\event\attr.py", line 320, in _exec_w_sync_on_first_run
    self(*args, **kw)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\event\attr.py", line 334, in __call__
    fn(*args, **kw)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\create.py", line 658, in on_connect
    do_on_connect(dbapi_connection)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.py", line 176, in on_connect
    cursor.execute("SET NAMES %s" % charset_name)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_mysqlclient.py", line 70, in execute
    return self._self_cur.execute(query, args)
  File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_pymysql.py", line 45, in _sw_execute
    span.tag(TagDbInstance((this.connection.db or b'').decode('utf-8')))
AttributeError: 'str' object has no attribute 'decode'
[cid:37bb7f7a-15db-4cc0-8a61-694b4ea9de32]
   TKS.

Re: Sky walking python sw_pymysql plugin error

Posted by kezhenxu94 <ke...@apache.org>.
Please send minimal/reproducible codes and steps to reproduce this issue. Only stack trace doesn’t help. 

> On Dec 7, 2023, at 11:37, 何于豪 <he...@wisecotech.com> wrote:
> 
> 
> hello there:
> python version 3.8.17
> pymysql version  1.0.0
> platform:both linux and windows can reproduce
> error stack 
> Traceback (most recent call last):
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 2091, in __call__
>     return self.wsgi_app(environ, start_response)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 2076, in wsgi_app
>     response = self.handle_exception(e)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_flask.py", line 87, in _sw_handle_exception
>     return _handle_exception(this, e)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 2073, in wsgi_app
>     response = self.full_dispatch_request()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_flask.py", line 65, in _sw_full_dispatch_request
>     resp = _full_dispatch_request(this)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 1519, in full_dispatch_request
>     rv = self.handle_user_exception(e)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_flask.py", line 79, in _sw_handle_user_exception
>     return _handle_user_exception(this, e)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 1517, in full_dispatch_request
>     rv = self.dispatch_request()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\flask\app.py", line 1503, in dispatch_request
>     return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
>   File "D:\code\model_algo\api\controller\job.py", line 53, in job_result
>     if result.status == "FAILURE":
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\result.py", line 473, in state
>     return self._get_task_meta()['status']
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\result.py", line 412, in _get_task_meta
>     return self._maybe_set_cache(self.backend.get_task_meta(self.id))
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\base.py", line 386, in get_task_meta
>     meta = self._get_task_meta_for(task_id)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\__init__.py", line 53, in _inner
>     return fun(*args, **kwargs)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\__init__.py", line 122, in _get_task_meta_for
>     session = self.ResultSession()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\__init__.py", line 96, in ResultSession
>     return session_manager.session_factory(
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\session.py", line 59, in session_factory
>     self.prepare_models(engine)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\celery\backends\database\session.py", line 54, in prepare_models
>     ResultModelBase.metadata.create_all(engine)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\sql\schema.py", line 4917, in create_all
>     bind._run_ddl_visitor(
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3227, in _run_ddl_visitor
>     with self.begin() as conn:
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3143, in begin
>     conn = self.connect(close_with_result=close_with_result)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3315, in connect
>     return self._connection_cls(self, close_with_result=close_with_result)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 96, in __init__
>     else engine.raw_connection()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3394, in raw_connection
>     return self._wrap_pool_connect(self.pool.connect, _connection)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\base.py", line 3361, in _wrap_pool_connect
>     return fn()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 320, in connect
>     return _ConnectionFairy._checkout(self)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 884, in _checkout
>     fairy = _ConnectionRecord.checkout(pool)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 486, in checkout
>     rec = pool._do_get()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
>     return self._create_connection()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 266, in _create_connection
>     return _ConnectionRecord(self)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 381, in __init__
>     self.__connect()
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\pool\base.py", line 689, in __connect
>     pool.dispatch.connect.for_modify(
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\event\attr.py", line 320, in _exec_w_sync_on_first_run
>     self(*args, **kw)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\event\attr.py", line 334, in __call__
>     fn(*args, **kw)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\engine\create.py", line 658, in on_connect
>     do_on_connect(dbapi_connection)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.py", line 176, in on_connect
>     cursor.execute("SET NAMES %s" % charset_name)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_mysqlclient.py", line 70, in execute
>     return self._self_cur.execute(query, args)
>   File "C:\Users\heyuhao\.conda\envs\algo\lib\site-packages\skywalking\plugins\sw_pymysql.py", line 45, in _sw_execute
>     span.tag(TagDbInstance((this.connection.db or b'').decode('utf-8')))
> AttributeError: 'str' object has no attribute 'decode'
> 
>    TKS.