2016-03-27 2 views
7

Я запускаю сценарий AWS Lambda с использованием времени выполнения Python 2.7. Тем не менее, всякий раз, когда он инициализирует начинает импортировать grequests библиотеку, но не из-за его зависимость от GEvent:Невозможно импортировать grequests для AWS Lambda

Gevent is required for grequests.

Кажется, он успешно найти библиотеку grequests (так как он знает, что он нуждается в GEvent), но терпит неудачу.

То, что я пытался до сих пор:

pip install --ignore-installed grequests -t .

pip install --ignore-installed grequests -t ./lib

pip install --ignore-installed gevent -t .

pip install --ignore-installed gevent -t ./lib

А потом сжать содержимое каталога и загрузить AWS в инструкции здесь: http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

Кажется, что независимо от того, что я пытаюсь Lambda не в состоянии найти gevent, но он может найти другие нестандартные библиотеки без проблем.

+0

Где вы звоните 'пип install'? В вашем лямбда-сценарии? – helloV

+0

Я добавлю это к исходному сообщению, но я вызываю это с терминала и загружаю содержимое для загрузки в AWS, следуя этим инструкциям: http://docs.aws.amazon.com/lambda/latest/dg/ lambda-python-how-to-create-deployment-package.html –

ответ

2

Мне пришлось построить gevent от src на экземпляре Amazon Linux. Я помещал результирующие файлы в zip, если кому-то они нужны - просто включите их в загруженную Lambda zip, и вы должны быть параллельными, как босс.

https://github.com/brandonmp/aws-lambda-grequests

+0

Кажется, моя проблема пыталась скомпилировать все grequests на Amazon Linux, которая сталкивалась с несвязанной проблемой. Просто компиляция 'gevent' работает. Благодаря! –

3

Поскольку Gevent основан на libev, он, скорее всего, скомпилирует двоичные файлы при установке через pip.

Вам необходимо убедиться, что вы развертываете двоичные файлы, которые скомпилированы для Amazon Linux, если вы хотите, чтобы они исполнялись в AWS Lambda. Вы можете сделать это, создав свой пакет развертывания на экземпляре EC2, на котором запущен Amazon Linux.

Также вышли this answer и this tutorial.

+0

Спасибо за это. Я попытался сделать эту работу, развернув экземпляр EC2 и установив туда, а затем включив результат в свое репо. Однако у меня такая же проблема. –

+0

У вас такая же проблема при запуске кода на EC2? Если да, я бы рекомендовал отладить проблему там, потому что он должен вести себя так же, как в Lambda. Отладка таких вещей прямо в Лямбде - настоящая боль. – birnbaum

+0

Удовлетворительный факт, это также решение для получения библиотеки 'lxml' для работы на лямбда. Поэтому, если кто-то ищет, просто скомпилируйте его на сервере. –

Смежные вопросы