Ошибка Pdb при отладке приложения python с безсерверным запуском в автономном режиме - PullRequest
0 голосов
/ 21 февраля 2019

У меня проблема с отладкой функции просмотра: import pdb; pdb.set_trace() находится внутри нее, а сервер не запускается как > sls offline start в консоли.А именно, отправляя соответствующий запрос GET, я получаю следующую ошибку:

Python: > /.../handler.py(88)get_results()
-> request_params = event.query_params


Python: (Pdb)


Python: 2019-02-20 18:37:43,648 [ERROR] | ...
Traceback (most recent call last):
  ...
  File ".../handler.py", line 88, in get_results
  ...
  File "/usr/lib/python3.6/bdb.py", line 51, in trace_dispatch
    return self.dispatch_line(frame)
  File "/usr/lib/python3.6/bdb.py", line 70, in dispatch_line
    if self.quitting: raise BdbQuit
bdb.BdbQuit

Google предполагает, что проблема заключается в невозможности безсервисного процесса для чтения со стандартного ввода, но я не знаю, как справиться с этой проблемой.

Есть предложения?

1 Ответ

0 голосов
/ 28 февраля 2019

Я нашел решение здесь https://stackoverflow.com/a/26975795/4388451:

  1. создать две фифы:

    mkfifo fifo_stdin mkfifo fifo_stdout

inодин терминал

В том же терминале откройте stdout на фоне и напишите stdin:

cat fifo_stdout & cat> fifo_stdin

В Pythonкод создайте объект pdb и используйте его:

import pdb mypdb = pdb.Pdb (stdin = open ('fifo_stdin', 'r'), stdout = open ('fifo_stdout', 'w')) .... mypdb.set_trace ()

Запуск кода python из папки, в которой были размещены fifos (или поместите fifos на первом шаге в папку с кодом python) вдругой терминал

Теперь я могу использовать pdb в первой консоли!

PS При отладке полезно использовать параметр --noTimeout: sls offline --noTimeout

...