首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误:使用Flask-socketio命名"Socketkind is not defind“?

错误:使用Flask-socketio命名"Socketkind is not defind“?
EN

Stack Overflow用户
提问于 2019-05-27 16:19:37
回答 1查看 343关注 0票数 0

我正在使用flask-socketio构建一个web-telnet。在我将telnet类对象添加到我的本地网络中的另一个设备之前,它工作得很好。有人知道如何解决这个问题吗?

在这里我的代码:

代码语言:javascript
复制
import telnetlib
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('check_device')
 def check(ip_add):
 device =  telnet_device(ip_add)
 device.connect()

class telnet_device():
  def __init__(self,ip_add):
        self.username  = 'user'
        self.password  = 'pass'
        self.host      = ip_add
        self.connection= False
        self.ketnoi    = ''

  def connect(self):
    try:
        self.ketnoi   = telnetlib.Telnet(self.host, timeout=15)
        self.ketnoi.write(self.username.encode()+b'\r')
        self.ketnoi.write(self.password.encode()+b'\r')
        self.ketnoi.expect([b'>',b']'],5)
        self.connection = True
        return True
   except Exception as error:
       print(error)
       return False

和错误消息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "src\gevent\greenlet.py", line 766, in gevent._greenlet.Greenlet.run
  File "C:\Python34\lib\site-packages\socketio\server.py", line 599, in _handle_event_internal
    r = server._trigger_event(data[0], namespace, sid, *data[1:])
  File "C:\Python34\lib\site-packages\socketio\server.py", line 628, in _trigger_event
    return self.handlers[namespace][event](*args)
  File "C:\Python34\lib\site-packages\flask_socketio\__init__.py", line 277, in _handler
    *args)
  File "C:\Python34\lib\site-packages\flask_socketio\__init__.py", line 680, in _handle_event
    ret = handler(*args)
  File "D:\web_app\app.py", line 301, in kiemtra_olt
    device.connect()
  File "D:\web_app\telnettb.py", line 15, in connect
    self.ketnoi   = telnetlib.Telnet(self.host, timeout=15)
  File "C:\Python34\lib\telnetlib.py", line 221, in __init__
    self.open(host, port, timeout)
  File "C:\Python34\lib\telnetlib.py", line 237, in open
    self.sock = socket.create_connection((host, port), timeout)
  File "C:\Python34\lib\site-packages\gevent\socket.py", line 83, in create_connection
    addrs = list(getaddrinfo(host, port, 0, SOCK_STREAM))
  File "C:\Python34\lib\site-packages\gevent\_socketcommon.py", line 218, in getaddrinfo
    in addrlist
  File "C:\Python34\lib\site-packages\gevent\_socketcommon.py", line 217, in <listcomp>
    for af, socktype, proto, canonname, sa
NameError: name 'SocketKind' is not defined
2019-05-27T08:41:52Z <Thread at 0x4e3c470: <bound method Server._handle_event_internal of <socketio.server.Server object at 0x044CEA70>>(<socketio.server.Server object at 0x044CEA70>, '626fb5231dba41c5be8a226f8f8240b9', ['check_device', 'ip_add'], '/', None)> failed with NameError
EN

回答 1

Stack Overflow用户

发布于 2019-05-28 02:38:59

我相信您使用的Python版本太旧了。根据this issue,在3.4.3中引入了SocketKind类型。您使用的是3.4.2或更早的版本吗?升级到较新的Python应该可以解决您的问题。

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

https://stackoverflow.com/questions/56322198

复制
相关文章

相似问题

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