Как избежать использования POpen в ботах на Google App Engine? - PullRequest
0 голосов
/ 13 июня 2019

Движок Google App не поддерживает файловый ввод-вывод или другие низкоуровневые библиотеки.

Я хочу использовать библиотеку boto (1.9.167) в своем проекте на GAE.

Теперь я столкнулся с этой ошибкой:

(/base/alloc/tmpfs/dynamic_runtimes/python27g/a19f7fde5f64c33c/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py:269)
Traceback (most recent call last):
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/a19f7fde5f64c33c/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/a19f7fde5f64c33c/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/a19f7fde5f64c33c/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/main.py", line 20, in <module>
    from project import (
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/src/project/upload_api.py", line 5, in <module>
    import boto3
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/lib/boto3/__init__.py", line 16, in <module>
    from boto3.session import Session
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/lib/boto3/session.py", line 17, in <module>
    import botocore.session
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/lib/botocore/session.py", line 30, in <module>
    import botocore.credentials
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/lib/botocore/credentials.py", line 774, in <module>
    class ProcessProvider(CredentialProvider):
  File "/base/data/home/apps/s~my-project/app:v2-0-281.418863766814079756/lib/botocore/credentials.py", line 778, in ProcessProvider
    def __init__(self, profile_name, load_config, popen=subprocess.Popen):
AttributeError: 'module' object has no attribute 'Popen'

Можно ли, например, пропустить credentials проверку и, следовательно, обойти вызов Popen?

Мой код просто

s3_client = boto3.client('s3',
                         aws_access_key_id=access_key,
                         aws_secret_access_key=secret_key)
s3_client.generate_presigned_url(...)

Нет никакой зависимости ни от одного файла, хранящегося локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...