Flask API медленный, профилирование возвращает {метод 'disable' объектов '_lsprof.Profiler'} - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь профилировать приложение Flask, у меня есть вызов приложения, который занимает очень много времени, и я не уверен почему. используя werkzeug.contrib.profiler Я получил эти результаты:

server-dev_1  | PATH: '/review/assign'
server-dev_1  |          140670 function calls (117532 primitive calls) in 7.404 seconds
server-dev_1  |
server-dev_1  |    Ordered by: internal time, call count
server-dev_1  |    List reduced from 2036 to 30 due to restriction <30>
server-dev_1  |
server-dev_1  |    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
server-dev_1  |         1    7.190    7.190    7.190    7.190 {method 'disable' of '_lsprof.Profiler' objects}
server-dev_1  |     57/10    0.023    0.000    0.001    0.000 /usr/local/lib/python3.7/dist-packages/gevent/_socket3.py:426(recv_into)
server-dev_1  |         1    0.023    0.023    0.023    0.023 ./myapp/auth/saml.py:57(decorated_function)
server-dev_1  |   887/857    0.009    0.000    0.119    0.000 /usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/attributes.py:274(__get__)
server-dev_1  | 4526/1331    0.006    0.000    0.001    0.000 {built-in method builtins.getattr}
server-dev_1  |   799/414    0.006    0.000    0.005    0.000 /usr/local/lib/python3.7/dist-packages/marshmallow/fields.py:233(serialize)
server-dev_1  | 13846/4532    0.005    0.000    0.010    0.000 /usr/local/lib/python3.7/dist-packages/simplejson/encoder.py:571(_iterencode_dict)
server-dev_1  |         6    0.004    0.001    0.004    0.001 {method 'do_handshake' of '_ssl._SSLSocket' objects}
server-dev_1  | 9632/4516    0.003    0.000    0.009    0.000 /usr/local/lib/python3.7/dist-packages/simplejson/encoder.py:471(_iterencode_list)
server-dev_1  |    344/12    0.003    0.000    0.089    0.007 /usr/local/lib/python3.7/dist-packages/marshmallow/marshalling.py:92(serialize)
server-dev_1  | 10231/10230    0.003    0.000    0.004    0.000 {built-in method builtins.isinstance}
server-dev_1  |    458/89    0.002    0.000    0.003    0.000 /usr/local/lib/python3.7/dist-packages/pymysql/connections.py:981(_read_packet)
server-dev_1  |        55    0.002    0.000    0.008    0.000 /usr/local/lib/python3.7/dist-packages/sqlalchemy/sql/visitors.py:223(iterate)
server-dev_1  |       112    0.002    0.000    0.004    0.000 /usr/local/lib/python3.7/dist-packages/sqlalchemy/sql/selectable.py:3010(_froms)
server-dev_1  |   796/794    0.002    0.000    0.116    0.000 /usr/local/lib/python3.7/dist-packages/marshmallow/utils.py:347(_get_value_for_key)
server-dev_1  |       8/3    0.002    0.000    0.001    0.000 /usr/local/lib/python3.7/dist-packages/gevent/_ssl3.py:312(read)
server-dev_1  |   916/178    0.002    0.000    0.001    0.000 /usr/local/lib/python3.7/dist-packages/pymysql/connections.py:1017(_read_bytes)
server-dev_1  |     56/55    0.001    0.000    0.003    0.000 /usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/loading.py:337(_instance_processor)
server-dev_1  |        55    0.001    0.000    0.002    0.000 /usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py:104(_calling_context)
server-dev_1  |      55/8    0.001    0.000    0.007    0.001 /usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py:1163(_execute_context)
server-dev_1  |    107/96    0.001    0.000    0.010    0.000 /usr/local/lib/python3.7/dist-packages/marshmallow/schema.py:469(dump)
server-dev_1  |       208    0.001    0.000    0.005    0.000 /usr/local/lib/python3.7/dist-packages/pymysql/connections.py:410(_parse_field_descriptor)
server-dev_1  |    100/44    0.001    0.000    0.002    0.000 /code/libs/common/utils/decorators.py:659(wrapper)
server-dev_1  |      1563    0.001    0.000    0.001    0.000 /usr/local/lib/python3.7/dist-packages/pymysql/connections.py:240(read)
server-dev_1  |   916/178    0.001    0.000    0.001    0.000 {method 'read' of '_io.BufferedReader' objects}
server-dev_1  |      4532    0.001    0.000    0.011    0.000 /usr/local/lib/python3.7/dist-packages/simplejson/encoder.py:661(_iterencode)
server-dev_1  |        54    0.001    0.000    0.002    0.000 /usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py:638(_init_compiled)
server-dev_1  |      1602    0.001    0.000    0.004    0.000 /usr/local/lib/python3.7/dist-packages/pymysql/connections.py:345(read_length_coded_string)
server-dev_1  |     273/8    0.001    0.000    0.001    0.000 {built-in method _abc._abc_subclasscheck}
server-dev_1  |       8/4    0.001    0.000    0.001    0.000 /usr/local/lib/python3.7/dist-packages/gevent/_socket3.py:375(recv)

Я понятия не имею, что это такое {method 'disable' of '_lsprof.Profiler' objects}, но кажется, что это занимает большую часть времени?

...