首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Pysnmp get_request使用nameko创建服务时出错--尝试对ASN.1架构对象执行"nameko_entrypoints“操作

为Pysnmp get_request使用nameko创建服务时出错--尝试对ASN.1架构对象执行"nameko_entrypoints“操作
EN

Stack Overflow用户
提问于 2019-07-24 20:12:48
回答 1查看 50关注 0票数 0

我刚接触pysnmp和nameko。我被分配了一项工作,在nameko框架中创建一个服务,以便使用get_request库执行snmp。

下面是我尝试过的代码

代码语言:javascript
复制
from pysnmp.hlapi import *
from nameko.rpc import rpc


class GreetingService(object):
    name = "greeting_service"

    @rpc
    def getFunc(oid):
        errorIndication, errorStatus, errorIndex, varBinds = next(
            getCmd(SnmpEngine(),
                   CommunityData('public', mpModel=0),
                   UdpTransportTarget(('snmp.live.gambitcommunications.com', 161)),
                   ContextData(),
                   ObjectType(ObjectIdentity('SNMPv2-MIB', oid, 0)))
        )

        if errorIndication:
            print(errorIndication)
        elif errorStatus:
            print('%s at %s' % (errorStatus.prettyPrint(),
                                errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
        else:
            for varBind in varBinds:
                print(' = '.join([x.prettyPrint() for x in varBind]))

    if __name__ == "__main__":
        getFunc('sysName')

当我尝试通过以下命令使用终端启动服务时

代码语言:javascript
复制
$ nameko run helloworld

我得到以下错误消息。

代码语言:javascript
复制
syed@syed-ThinkPad-E480:~/Pysnmp$ nameko run helloworld
Traceback (most recent call last):
  File "/home/syed/.local/bin/nameko", line 11, in <module>
    sys.exit(main())
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/main.py", line 112, in main
    args.main(args)
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/commands.py", line 110, in main
    main(args)
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/run.py", line 181, in main
    import_service(path)
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/run.py", line 71, in import_service
    if inspect.getmembers(potential_service, is_entrypoint):
  File "/usr/lib/python3.7/inspect.py", line 354, in getmembers
    if not predicate or predicate(value):
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/run.py", line 35, in is_entrypoint
    return hasattr(method, ENTRYPOINT_EXTENSIONS_ATTR)
  File "/home/syed/.local/lib/python3.7/site-packages/pyasn1/type/base.py", line 221, in __getattr__
    raise error.PyAsn1Error('Attempted "%s" operation on ASN.1 schema object' % attr)
pyasn1.error.PyAsn1Error: Attempted "nameko_entrypoints" operation on ASN.1 schema object
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "/home/syed/.local/bin/nameko", line 11, in <module>
    sys.exit(main())
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/main.py", line 112, in main
    args.main(args)
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/commands.py", line 110, in main
    main(args)
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/run.py", line 181, in main
    import_service(path)
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/run.py", line 71, in import_service
    if inspect.getmembers(potential_service, is_entrypoint):
  File "/usr/lib/python3.7/inspect.py", line 354, in getmembers
    if not predicate or predicate(value):
  File "/home/syed/.local/lib/python3.7/site-packages/nameko/cli/run.py", line 35, in is_entrypoint
    return hasattr(method, ENTRYPOINT_EXTENSIONS_ATTR)
  File "/home/syed/.local/lib/python3.7/site-packages/pyasn1/type/base.py", line 221, in __getattr__
    raise error.PyAsn1Error('Attempted "%s" operation on ASN.1 schema object' % attr)
pyasn1.error.PyAsn1Error: Attempted "nameko_entrypoints" operation on ASN.1 schema object

请帮助我了解我所尝试的是正确的方式还是错误的方式。如果是这样,如何纠正错误。

任何帮助都是值得欣赏的。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 17:36:24

这与nameko连接你的代码的方式有关。

它似乎尝试在您模块中找到的所有对象中查找nameko_entrypoints属性,最终运行到ASN.1schema对象中(这些对象是神圣的,不应用于除蓝图之外的任何用途)。

我的建议是将from pysnmp.hlapi import *替换为您在代码中使用的pysnmp类/函数的特定导入。希望能把易碎的碎片藏在nameko的视线之外。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57182655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档