From 54e864f79be39bfefb7a1c3a236d58143368e721 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Sat, 22 Oct 2022 19:47:37 +0300 Subject: [PATCH] [~] Refactor --- d1/f2.py | 46 ++++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/d1/f2.py b/d1/f2.py index 9eb0b5a..3af8e68 100644 --- a/d1/f2.py +++ b/d1/f2.py @@ -423,50 +423,40 @@ class Application: stdout=subprocess.PIPE, stdin=subprocess.PIPE ) as p: - stderr_lines = [] - response_headers_all = [] + response_headers = [] returncode = None try: - stderr_poll = select.poll() - stderr_poll.register( - p.stderr, - select.POLLIN & select.POLLPRI - ) stdout_length = 0 + last_header = None + + while True: + if last_header == '\r\n' or not p.poll() is None: + break + + last_header = p.stdout.readline().decode('utf-8') + response_headers.append( + last_header.rstrip('\r\n') + ) + + yield (response_headers, b'', None) + while True: returncode = p.poll() - poll_result = stderr_poll.poll(100) - - self.op1(json_data=[pprint.pformat(poll_result)]) - if len(poll_result) > 0: - stderr = p.stderr.readline(1024).decode('utf-8') - stderr_lines.append(stderr) - else: - stderr = '' - stdout = p.stdout.read(1024) stdout_length += len(stdout) - response_headers = [ - o[2:] - for o in stderr.splitlines() - if o.startswith('< ') - ] - response_headers_all.extend(response_headers) + yield ([], stdout, returncode) - yield (response_headers, stdout, returncode) - - if len(stderr) == 0 and len(stdout) == 0 and not returncode is None: + if len(stdout) == 0 and not returncode is None: break assert returncode == 0 except Exception as exception: self.op1(json_data=dict( - stderr_lines=stderr_lines, stdout_length=stdout_length, - response_headers_all=response_headers_all, + response_headers=response_headers, returncode=returncode, )) raise exception @@ -512,8 +502,8 @@ class Application: 'http://%s%s' % (proxy_url, uri), '-g', '-X', method, - '-v', '--no-buffer', + '-i', '--silent', '--data-binary', '@%s' % self.input_dat, '--max-filesize', '%d' % Application.MAX_FILE_SIZE,