Работа вне контекста запроса - Flask / Guzzle - PullRequest
0 голосов
/ 25 февраля 2019

Я загружаю файл через Laravel и использую Guzzle, чтобы помочь с этим.Функция выглядит следующим образом:

$client = new \GuzzleHttp\Client();
        $response = $client->request('POST', 'url', [
            'multipart' => [[
                'name'     => 'file',
                'contents' => $file,
                'filename' => $save_name,
                ]]
            ]);
        $response = json_decode($response->getBody(),true);
        dd($response);

Эта функция отправляется в функцию Lambda, которая представляет собой небольшое приложение Flask, которое ради того, чтобы задавать этот вопрос, было сведено к абсолютно голым костям, но при этом вызывает ошибки.

from flask import Flask, request

app = Flask(__name__)
@app.route('/',methods=['POST'])

def main():
    start = time.time()
    data = request.files['file']
    return data.name

if __name__ == '__main__':
    app.run(port=5000, debug=True)

Это на самом деле отлично выводится, когда я перехожу на экран, однако, когда я просматриваю хвостовые журналы, возникают непрерывные ошибки, следующие:

[1551111648511] Working outside of request context.

This typically means that you attempted to use functionality that needed
an active HTTP request.  Consult the documentation on testing for
information about how to avoid this problem.: RuntimeError
Traceback (most recent call last):
  File "/var/task/handler.py", line 580, in lambda_handler
  return LambdaHandler.lambda_handler(event, context)
  File "/var/task/handler.py", line 248, in lambda_handler
  return handler.handler(event, context)
  File "/var/task/handler.py", line 424, in handler
  result = self.run_function(app_function, event, context)
  File "/var/task/handler.py", line 283, in run_function
  result = app_function(event, context) if varargs else app_function()
  File "/var/task/main.py", line 31, in main
  if request.method == 'POST':
  File "/var/task/werkzeug/local.py", line 347, in __getattr__
  return getattr(self._get_current_object(), name)
  File "/var/task/werkzeug/local.py", line 306, in _get_current_object
  return self.__local()
  File "/var/task/flask/globals.py", line 37, in _lookup_req_object
  raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.

This typically means that you attempted to use functionality that needed
an active HTTP request.  Consult the documentation on testing for
information about how to avoid this problem.

Прочитавнесколько других ответов, я пытался вставить

with app.test_request_context:
    data = request.files['file']

, однако это приводит к неправильному запросу.

Если я отправляю запрос скручивания с моей локальной машины с прикрепленным файлом, онработает нормально, без ошибок, поэтому мне интересно, если это что-то связано с жадностью.

Как всегда, вся помощь очень ценится!

...