एडब्ल्यूएस लैम्ब्डा में फ़ंक्शन निष्पादित करते समय त्रुटि, जबकि स्थानीय रूप से कोई त्रुटि नहीं है। एडब्ल्यूएस लैम्ब्डा में कोड निष्पादित करते समय यह त्रुटि उत्पन्न होती है, जो मैं चाहता हूं कि डायनेमोडब प्रश्नों को करने और उनका उपयोग करने के लिए ग्रैकप्ल का उपयोग करने में सक्षम होना चाहिए।

समाधान का प्रयास: अजगर आभासी वातावरण से टाइपिंग की स्थापना रद्द करें।

त्रुटि जो होती है:

[ERROR] AttributeError: type object 'Callable' has no attribute '_abc_registry'
Traceback (most recent call last):
  File "/var/lang/lib/python3.7/imp.py", line 234, in load_module
    return load_source(name, filename, file)
  File "/var/lang/lib/python3.7/imp.py", line 171, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 696, in _load
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/task/patron4.py", line 7, in <module>
    import graphene
  File "/tmp/sls-py-req/graphene/__init__.py", line 3, in <module>
    from .types import (
  File "/tmp/sls-py-req/graphene/types/__init__.py", line 2, in <module>
    from graphql import ResolveInfo
  File "/tmp/sls-py-req/graphql/__init__.py", line 27, in <module>
    from .graphql import graphql
  File "/tmp/sls-py-req/graphql/graphql.py", line 1, in <module>
    from .execution import ExecutionResult
  File "/tmp/sls-py-req/graphql/execution/__init__.py", line 21, in <module>
    from .executor import execute, subscribe
  File "/tmp/sls-py-req/graphql/execution/executor.py", line 14, in <module>
    from promise import Promise, promise_for_dict, is_thenable
  File "/tmp/sls-py-req/promise/__init__.py", line 18, in <module>
    from .promise import (
  File "/tmp/sls-py-req/promise/promise.py", line 8, in <module>
    from typing import (List, Any, Callable, Dict, Iterator, Optional, # flake8: noqa
  File "/tmp/sls-py-req/typing.py", line 1357, in <module>
    class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
  File "/tmp/sls-py-req/typing.py",enter code here line 1005, in __new__
    self._abc_registry = extra._abc_registry

कोड का इस्तेमाल किया:

class User(Model):
  class Meta:
    table_name = 'patron2'
    region = 'us-east-2'
    host = 'https://dynamodb.us-east-2.amazonaws.com'
  id = UnicodeAttribute(hash_key=True, null=False)
  discipline = UnicodeAttribute(null=False)


class UserNode(PynamoObjectType):
  class Meta:
    model = User
    interfaces = (graphene.Node,)

class Query(graphene.ObjectType):
  users = graphene.List(UserNode)
  def resolve_users(self, args, context, info):
    return list(User.scan())

schema = graphene.Schema(query=Query)

def patrongrafico(event, context):
  # fetch all todos from the database
  try:
    print("hola")
    query = '''
        users {
          discipline
        }
      '''
    results = schema.execute(query)
    print(results)
  except Exception as ex:
    print(ex)
  return {'statusCode': 200,
    'body': json.dumps({'items': [dict(result) for result in results]})}
1
Max Novillo 21 अक्टूबर 2019, 11:50
हे मैक्स, कृपया किसी भी त्रुटि संदेश को प्रश्न में टेक्स्ट के रूप में कॉपी करें और हमें वह कोड दिखाएं जिसने इसे बनाया है।
 – 
Maurice
21 अक्टूबर 2019, 14:06
ठीक है, आपका जवाब धन्यवाद।
 – 
Max Novillo
21 अक्टूबर 2019, 19:34
आपने अपना कोड कैसे पैकेज और परिनियोजित किया? क्या आपने इसके लिए किसी फ्रेमवर्क का इस्तेमाल किया?
 – 
Maurice
21 अक्टूबर 2019, 20:48
हां, सर्वरलेस ढांचे के साथ।
 – 
Max Novillo
21 अक्टूबर 2019, 20:56
क्या आप serverless-python-requirements प्लगइन का उपयोग कर रहे हैं? मैंने यह पता लगाने में कुछ दिन बिताए कि एक पुस्तकालय को slim पैकेजिंग मोड पसंद नहीं आया, यह स्थानीय रूप से भी ठीक काम कर रहा था और केवल AWS में त्रुटियां फेंकी - मुझे बताएं कि क्या इससे मदद मिली
 – 
Maurice
21 अक्टूबर 2019, 21:10

2 जवाब

चूंकि आप सर्वर रहित-पायथन-आवश्यकताओं प्लगइन के संयोजन में सर्वर रहित फ्रेमवर्क का उपयोग कर रहे हैं, इसलिए आपको यह सुनिश्चित करना चाहिए कि स्लिम पैकेजिंग बंद है, क्योंकि यह कुछ पुस्तकालयों में हस्तक्षेप करता है। अनिवार्य रूप से कुछ पुस्तकालय मानते हैं कि वे "वास्तविक" पैकेज प्रबंधक के माध्यम से स्थापित हैं और उस स्थिति में निर्देशिका लेआउट और फाइलें थोड़ी अलग दिखती हैं।

मुझे कुछ महीने पहले jsonschema पैकेज के साथ यह समस्या हो रही थी और इसके बारे में ब्लॉग पोस्ट (पूर्ण प्रकटीकरण: यह मेरे नियोक्ता का ब्लॉग है)।

अनिवार्य रूप से आपका serverless.yml एक custom अनुभाग के रूप में जिसे आप प्लगइन्स को कॉन्फ़िगर करने के लिए अन्य चीजों के साथ उपयोग कर सकते हैं:

custom:
  pythonRequirements:
    slim: true

पतला true पैरामीटर प्रभावी रूप से कुछ जानकारी को हटा देता है जो अधिकांश पुस्तकालयों के लिए आवश्यक नहीं होनी चाहिए, लेकिन कुछ इस पर भरोसा करते हैं। इस पैरामीटर की जानकारी के लिए पैकेज के दस्तावेज़ देखें।

इस कॉन्फ़िगरेशन के साथ पुन: प्रयास करें:

custom:
  pythonRequirements:
    slim: false
0
Maurice 22 अक्टूबर 2019, 10:39
मैंने स्लिम कॉन्फ़िगर किया है: झूठा और वही त्रुटि दिखाई दे रही है। इसके अतिरिक्त, मैंने बेहतर परिणाम प्राप्त किए बिना टाइपिंग मॉड्यूल को छोड़ने के लिए निम्न कॉन्फ़िगरेशन सेट किया है। pythonRequirements: zip: true slim: false noDeploy: - typing
 – 
Max Novillo
22 अक्टूबर 2019, 12:02

त्रुटि का समाधान पायथन 3.7 के संस्करण को हटाना और 3.6 को लागू करना है, क्योंकि ग्राफीन 3.6 से अधिक संस्करणों का समर्थन नहीं करता है।

0
Max Novillo 30 नवम्बर 2019, 02:11
क्या आपने स्थानीय रूप से संस्करण 3.7 का उपयोग किया था? यदि हाँ, तो कृपया विस्तार से बताएं कि कोड स्थानीय रूप से w/3.7 पर ठीक काम क्यों कर रहा था और AWS पर विफल हो रहा था?
 – 
helcode
30 नवम्बर 2019, 02:36