2016-03-27 38 views
7

के लिए grequests आयात करने में असमर्थ मैं Python 2.7 रनटाइम के साथ एक एडब्ल्यूएस लैम्ब्डा स्क्रिप्ट चला रहा हूं। हालांकि, जब भी यह initializes यह grequests पुस्तकालय आयात करने के लिए शुरू होता है लेकिन विफल रहता है की वजह से यह gevent पर निर्भरता है:एडब्ल्यूएस लैम्ब्डा

Gevent is required for grequests.

यह (क्योंकि यह जानता है कि यह gevent की जरूरत है) लेकिन विफल रहता है इसे सफलतापूर्वक grequests पुस्तकालय रही है लगता है।

क्या मैं अब तक की कोशिश की है:

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

और फिर मैं निर्देशिका की सामग्री को संपीड़ित और प्रति एडब्ल्यूएस पर अपलोड यहां निर्देश: http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

ऐसा कोई फर्क नहीं पड़ता कि मैं कोशिश करता हूं कि लैम्ब्डा gevent का पता लगाने में असमर्थ है, लेकिन यह बिना किसी समस्या के अन्य गैर-डिफ़ॉल्ट लाइब्रेरी ढूंढने में सक्षम है।

+0

कहाँ 'पिप install' बुला रहे हैं? आपके लैम्ब्डा स्क्रिप्ट में? – helloV

+0

मैं इसे मूल पोस्ट में जोड़ूंगा, लेकिन मैं इसे टर्मिनल से कॉल कर रहा हूं और इन निर्देशों के बाद AWS पर अपलोड करने के लिए सामग्री को ज़िप कर रहा हूं: http://docs.aws.amazon.com/lambda/latest/dg/ लैम्ब्डा-पायथन-कैसे-से-निर्माण-तैनाती-पैकेज.html –

उत्तर

2

मुझे अमेज़ॅन लिनक्स उदाहरण पर src से gevent बनाना था। मैंने परिणामस्वरूप फ़ाइलों को zip में रखा है यदि किसी को उनकी आवश्यकता है - बस उन्हें अपने अपलोड किए गए लैम्ब्डा zip में शामिल करें और आपको बॉस की तरह समवर्ती होना चाहिए।

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

+0

ऐसा लगता है कि मेरा मुद्दा अमेज़ॅन लिनक्स पर पूरी कमाई को संकलित करने की कोशिश कर रहा था जो एक असंबंधित मुद्दे पर चल रहा था। बस 'gevent' काम संकलित। धन्यवाद! –

3

चूंकि गीवेंट libev पर आधारित है, यह संभवतः पाइप के माध्यम से स्थापित होने पर द्विआधारी संकलन की संभावना है।

आपको यह सुनिश्चित करने की ज़रूरत है कि आप अमेज़ॅन लिनक्स के लिए संकलित किए गए बाइनरी को तैनात कर रहे हैं यदि आप उन्हें एडब्ल्यूएस लैम्ब्डा में निष्पादन योग्य बनाना चाहते हैं। आप अमेज़ॅन लिनक्स चला रहे ईसी 2 इंस्टेंस पर अपना तैनाती पैकेज बनाकर ऐसा कर सकते हैं।

this answer और this tutorial देखें।

+0

इसके लिए धन्यवाद। मैंने इस काम को ईसी 2 इंस्टेंस को कताई करके और वहां स्थापित करने और फिर मेरे रेपो में परिणाम सहित कोशिश करने का प्रयास किया। हालांकि, मेरे पास एक ही समस्या है। –

+0

क्या ईसी 2 पर कोड चलाते समय आपके पास एक ही समस्या है? यदि हां, तो मैं वहां समस्या को डीबग करने की अनुशंसा करता हूं, क्योंकि इसे लैम्ब्डा जैसा ही व्यवहार करना चाहिए। लैम्ब्डा में सीधे इस तरह की डिबगिंग चीजें असली दर्द है। – birnbaum

+0

मजेदार तथ्य, यह लैम्ब्डा पर चलाने के लिए 'lxml' लाइब्रेरी प्राप्त करने का भी समाधान है। तो अगर कोई खोज रहा है, तो बस सर्वर पर संकलित करें। –

संबंधित मुद्दे