Error that I couldnt catch - TypeError: getattr(): attribute name must be string Error

43 views
Skip to first unread message

Rahul

unread,
Sep 21, 2019, 4:05:29 AM9/21/19
to web2py-users

Hello

Has anyone found such an error on web2py ? If yes - any clue what it could be ?


Ticket ID

109.102.111.32.2019-09-16.00-02-25.3b80feb4-c283-4a67-8ece-6d7917ba4334

Version

web2pyâ„¢Version 2.18.5-stable+timestamp.2019.04.08.04.22.03
PythonPython 2.7.13: /usr/bin/python (prefix: /usr)

Traceback

1.
2.
3.
4.
5.
6.
7.
8.
9.
Traceback (most recent call last):
File "/home/www-data/web2py/gluon/main.py", line 435, in wsgibase
session.connect(request, response)
File "/home/www-data/web2py/gluon/globals.py", line 1002, in connect
session_pickled = pickle.dumps(self, pickle.HIGHEST_PROTOCOL)
File "/home/www-data/web2py/gluon/storage.py", line 52, in <lambda>
__getnewargs__ = lambda self: getattr(dict,self).__getnewargs__(self)
TypeError: getattr(): attribute name must be string

Error snapshot help Detailed traceback description

<type 'exceptions.TypeError'>(getattr(): attribute name must be string)

inspect attributes

Exception instance attributes

__getslice__<method-wrapper '__getslice__' of exceptions.TypeError object>
__str__<method-wrapper '__str__' of exceptions.TypeError object>
__getattribute__<method-wrapper '__getattribute__' of exceptions.TypeError object>
__dict__{}
__sizeof__<built-in method __sizeof__ of exceptions.TypeError object>
message'getattr(): attribute name must be string'
__init__<method-wrapper '__init__' of exceptions.TypeError object>
__setattr__<method-wrapper '__setattr__' of exceptions.TypeError object>
__reduce_ex__<built-in method __reduce_ex__ of exceptions.TypeError object>
__new__<built-in method __new__ of type object>
__format__<built-in method __format__ of exceptions.TypeError object>
__class__<type 'exceptions.TypeError'>
__doc__'Inappropriate argument type.'
__getitem__<method-wrapper '__getitem__' of exceptions.TypeError object>
__setstate__<built-in method __setstate__ of exceptions.TypeError object>
__reduce__<built-in method __reduce__ of exceptions.TypeError object>
args('getattr(): attribute name must be string',)
__subclasshook__<built-in method __subclasshook__ of type object>
__unicode__<built-in method __unicode__ of exceptions.TypeError object>
__delattr__<method-wrapper '__delattr__' of exceptions.TypeError object>
__repr__<method-wrapper '__repr__' of exceptions.TypeError object>
__hash__<method-wrapper '__hash__' of exceptions.TypeError object>

Frames

  • File /home/www-data/web2py/gluon/main.py in wsgibase at line 435 code arguments variables

    Function argument list

    (environ={'CONTEXT_DOCUMENT_ROOT': '/var/www/html', 'CONTEXT_PREFIX': '', 'DOCUMENT_ROOT': '/var/www/html', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2', 'HTTP_CACHE_CONTROL': 'no-cache', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_HOST': 'www.artpic.in', 'HTTP_PRAGMA': 'no-cache', 'HTTP_USER_AGENT': 'Java/1.6.0_04', ...}, responder=<built-in method start_response of mod_wsgi.Adapter object>)

    Code listing
    430.
    431.
    432.
    433.
    434.
    435.
    436.
    437.
    438.
    439.
                    # ##################################################
    # try load session or create new session file
    # ##################################################

    if not env.web2py_disable_session:
    session.connect(request, response)

    # ##################################################
    # run controller
    # ##################################################
    Variables
    session<Storage {}>
    session.connect<bound method Session.connect of <Storage {}>>
    request<Storage {'_vars': None, 'function': 'index', 'c...a/web2py/applications/artpic/', 'method': 'GET'}>
    response<Storage {'body': <cStringIO.StringO object at 0..._caller': <function <lambda> at 0x7fc3e069f320>}>
  • File /home/www-data/web2py/gluon/globals.py in connect at line 1002 code arguments variables

    Function argument list

    (self=<Storage {}>, request=<Storage {'_vars': None, 'function': 'index', 'c...a/web2py/applications/artpic/', 'method': 'GET'}>, response=<Storage {'body': <cStringIO.StringO object at 0..._caller': <function <lambda> at 0x7fc3e069f320>}>, db=None, tablename='web2py_session', masterapp='artpic', migrate=True, separate=None, check_client=False, cookie_key=None, cookie_expires=None, compression_level=None)

    Code listing
    997.
    998.
    999.
    1000.
    1001.
    1002.
    1003.
    1004.
    1005.
    1006.
                response.cookies[response.session_id_name]['path'] = '/'
    if cookie_expires:
    response.cookies[response.session_id_name]['expires'] = \
    cookie_expires.strftime(FMT)

    session_pickled = pickle.dumps(self, pickle.HIGHEST_PROTOCOL)
    response.session_hash = hashlib.md5(session_pickled).hexdigest()

    if self.flash:
    (
    response.flash, self.flash) = (self.flash, None)
    Variables
    pickle.HIGHEST_PROTOCOL2
    self<Storage {}>
    session_pickledundefined
    global pickle<module 'cPickle' (built-in)>
    pickle.dumps<built-in function dumps>
  • File /home/www-data/web2py/gluon/storage.py in <lambda> at line 52 code arguments variables

    Function argument list

    (self=<Storage {}>)

    Code listing
    47.
    48.
    49.
    50.
    51.
    52.
    53.
    54.
    55.
    56.
        __slots__ = ()
    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__
    __getitem__ = dict.get
    __getattr__ = dict.get
    __getnewargs__ = lambda self: getattr(dict,self).__getnewargs__(self)
    __repr__ = lambda self: '<Storage %s>' % dict.__repr__(self)
    # http://stackoverflow.com/questions/5247250/why-does-pickle-getstate-accept-as-a-return-value-the-very-instance-it-requi
    __getstate__ = lambda self: None
    __copy__ = lambda self: Storage(self)
    Variables
    ).__getnewargs__<bound method Session.<lambda> of <Storage {}>>
    self<Storage {}>
    __getnewargs__undefined
    builtingetattr<built-in function getattr>
    builtindict<type 'dict'>

Context

locals request session response

locals

self:
<Storage {}>

request

ajax:
False
application:
artpic
args:

cid:
None
client:
109.102.111.32
controller:
default
cookies:

env:
CONTEXT_DOCUMENT_ROOT:
/var/www/html
CONTEXT_PREFIX:
DOCUMENT_ROOT:
/var/www/html
GATEWAY_INTERFACE:
CGI/1.1
HTTP_ACCEPT:
text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
HTTP_CACHE_CONTROL:
no-cache
HTTP_CONNECTION:
keep-alive
HTTP_HOST:
HTTP_PRAGMA:
no-cache
HTTP_USER_AGENT:
Java/1.6.0_04
PATH_INFO:
/
PATH_TRANSLATED:
/home/www-data/web2py/wsgihandler.py/
QUERY_STRING:
REMOTE_ADDR:
109.102.111.32
REMOTE_PORT:
64775
REQUEST_METHOD:
GET
REQUEST_SCHEME:
http
REQUEST_URI:
/
SCRIPT_FILENAME:
/home/www-data/web2py/wsgihandler.py
SCRIPT_NAME:
SERVER_ADDR:
103.107.17.134
SERVER_ADMIN:
webmaster@localhost
SERVER_NAME:
SERVER_PORT:
80
SERVER_PROTOCOL:
HTTP/1.1
SERVER_SIGNATURE:
<address>Apache/2.4.25 (Debian) Server at www.artpic.in Port 80</address>
SERVER_SOFTWARE:
Apache/2.4.25 (Debian)
apache.version:
2
4
25
apache_version:
2
4
25
app_folders:
set(['/home/www-data/web2py/applications/artpic/', '/home/www-data/web2py/applications/Target/'])
applications_parent:
/home/www-data/web2py
context_document_root:
/var/www/html
context_prefix:
db_sessions:
set([])
debugging:
False
document_root:
/var/www/html
domain_application:
artpic
domain_controller:
None
domain_function:
None
gateway_interface:
CGI/1.1
gluon_parent:
/home/www-data/web2py
http_accept:
text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
http_cache_control:
no-cache
http_connection:
keep-alive
http_host:
http_pragma:
no-cache
http_user_agent:
Java/1.6.0_04
is_jython:
False
is_py2:
True
is_pypy:
False
is_source:
True
local_hosts:
103.107.17.134
::ffff:127.0.0.1
::1
127.0.0.1
mod_wsgi.application_group:
mod_wsgi.callable_object:
application
mod_wsgi.enable_sendfile:
0
mod_wsgi.handler_script:
mod_wsgi.ignore_activity:
0
mod_wsgi.listener_host:
mod_wsgi.listener_port:
80
mod_wsgi.path_info:
/
mod_wsgi.process_group:
mod_wsgi.request_handler:
wsgi-script
mod_wsgi.request_id:
Fi17tTt4fvw
mod_wsgi.request_start:
1568572345888022
mod_wsgi.script_name:
mod_wsgi.script_reloading:
1
mod_wsgi.script_start:
1568572345888235
mod_wsgi.thread_id:
0
mod_wsgi.thread_requests:
75L
mod_wsgi.total_requests:
75L
mod_wsgi.version:
4
5
11
mod_wsgi_application_group:
mod_wsgi_callable_object:
application
mod_wsgi_enable_sendfile:
0
mod_wsgi_handler_script:
mod_wsgi_ignore_activity:
0
mod_wsgi_listener_host:
mod_wsgi_listener_port:
80
mod_wsgi_path_info:
/
mod_wsgi_process_group:
mod_wsgi_request_handler:
wsgi-script
mod_wsgi_request_id:
Fi17tTt4fvw
mod_wsgi_request_start:
1568572345888022
mod_wsgi_script_name:
mod_wsgi_script_reloading:
1
mod_wsgi_script_start:
1568572345888235
mod_wsgi_thread_id:
0
mod_wsgi_thread_requests:
75L
mod_wsgi_total_requests:
75L
mod_wsgi_version:
4
5
11
path_info:
/
path_translated:
/home/www-data/web2py/wsgihandler.py/
query_string:
remote_addr:
109.102.111.32
remote_port:
64775
request_method:
GET
request_scheme:
http
request_uri:
/artpic/en/default/index
script_filename:
/home/www-data/web2py/wsgihandler.py
script_name:
server_addr:
103.107.17.134
server_admin:
webmaster@localhost
server_name:
server_port:
80
server_protocol:
HTTP/1.1
server_signature:
<address>Apache/2.4.25 (Debian) Server at www.artpic.in Port 80</address>
server_software:
Apache/2.4.25 (Debian)
web2py_original_uri:
/
web2py_path:
/home/www-data/web2py
web2py_version:
2.17.1-stable+timestamp.2018.08.06.01.02.56
wsgi.errors:
<mod_wsgi.Log object at 0x7fc3e0a1bee0>
wsgi.file_wrapper:
<type 'mod_wsgi.FileWrapper'>
wsgi.input:
<mod_wsgi.Input object at 0x7fc3e0a52f80>
wsgi.multiprocess:
True
wsgi.multithread:
False
wsgi.run_once:
False
wsgi.url_scheme:
http
wsgi.version:
1
0
wsgi_errors:
<mod_wsgi.Log object at 0x7fc3e0a1bee0>
wsgi_file_wrapper:
<type 'mod_wsgi.FileWrapper'>
wsgi_input:
<mod_wsgi.Input object at 0x7fc3e0a52f80>
wsgi_multiprocess:
True
wsgi_multithread:
False
wsgi_run_once:
False
wsgi_url_scheme:
http
wsgi_version:
1
0
extension:
html
folder:
/home/www-data/web2py/applications/artpic/
function:
index
global_settings:
app_folders:
set(['/home/www-data/web2py/applications/artpic/', '/home/www-data/web2py/applications/Target/'])
applications_parent:
/home/www-data/web2py
db_sessions:
set([])
debugging:
False
gluon_parent:
/home/www-data/web2py
is_jython:
False
is_py2:
True
is_pypy:
False
is_source:
True
local_hosts:
103.107.17.134
::ffff:127.0.0.1
::1
127.0.0.1
web2py_version:
2.17.1-stable+timestamp.2018.08.06.01.02.56
is_https:
False
is_local:
False
is_restful:
False
is_scheduler:
False
is_shell:
False
method:
GET
now:
datetime.datetime(2019, 9, 16, 0, 2, 25, 888360)
uri_language:
en
url:
/
utcnow:
datetime.datetime(2019, 9, 15, 18, 32, 25, 888387)
wsgi:
<gluon.main.LazyWSGI object at 0x7fc3e04f29d0>

session

response

body:
<cStringIO.StringO object at 0x7fc3e055dce0>
cookies:
session_id_artpic:
109.102.111.32-6e1c8c1d-79c7-41ab-a937-cfd6539e8d87
comment:
domain:
expires:
httponly:
max-age:
path:
/
secure:
version:
delimiters:
{{
}}
files:

flash:
form_label_separator:
:
formstyle:
table3cols
generic_patterns:
*
headers:
X-Powered-By:
web2py
menu:

meta:

postprocessing:

session_client:
109.102.111.32
session_cookie_compression_level:
None
session_cookie_expires:
None
session_data_name:
session_data_artpic
session_file:
None
session_filename:
/home/www-data/web2py/applications/artpic/sessions/109.102.111.32-6e1c8c1d-79c7-41ab-a937-cfd6539e8d87
session_id:
109.102.111.32-6e1c8c1d-79c7-41ab-a937-cfd6539e8d87
session_id_name:
session_id_artpic
session_masterapp:
artpic
session_new:
True
session_storage_type:
file
status:
200

In file: Framework

1.

Regards,
Rahul
Reply all
Reply to author
Forward
0 new messages