Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用引擎Python应用中使用paho mqtt时出错_Python_Google App Engine_Mqtt_Google Cloud Platform_Paho - Fatal编程技术网

在应用引擎Python应用中使用paho mqtt时出错

在应用引擎Python应用中使用paho mqtt时出错,python,google-app-engine,mqtt,google-cloud-platform,paho,Python,Google App Engine,Mqtt,Google Cloud Platform,Paho,我正在尝试用python修改一个googlecloud平台应用程序,该应用程序使用Flask进行MQTT连接。我通过执行pip install paho mqtt-t libs/包含了paho python库。但是,当我尝试运行应用程序时,即使我没有尝试连接到MQTT。我在检查IP地址时遇到了一个奇怪的错误: RuntimeError:error('传递给inet\u pton的非法IP地址字符串') 似乎是remote_socketlib中的某个东西导致了问题。这是安全问题吗?有没有办法禁用它

我正在尝试用python修改一个googlecloud平台应用程序,该应用程序使用Flask进行MQTT连接。我通过执行
pip install paho mqtt-t libs/
包含了paho python库。但是,当我尝试运行应用程序时,即使我没有尝试连接到MQTT。我在检查IP地址时遇到了一个奇怪的错误:
RuntimeError:error('传递给inet\u pton的非法IP地址字符串')

似乎是
remote_socket
lib中的某个东西导致了问题。这是安全问题吗?有没有办法禁用它

相关代码:

from flask import Flask
import paho.mqtt.client as mqtt
import logging as logger


app = Flask(__name__)


# Note: We don't need to call run() since our application is embedded within
# the App Engine WSGI application server.

#callback to print out connection status
def on_connect(mosq, obj, rc):
    logger.info('on_connect')
    if rc == 0:
        logger.info("Connected")
        mqttc.subscribe('test', 0)
    else:
        logger.info(rc)

def on_message(mqttc, obj, msg):
    logger.info(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))

mqttc = mqtt.Client("mqttpy")
mqttc.on_message = on_message
mqttc.on_connect = on_connect
以及完整堆栈跟踪:

ERROR    2014-06-03 15:14:57,285 wsgi.py:262]
Traceback (most recent call last):
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 239, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 298, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 84, in LoadObject
    obj = __import__(path[0])
  File "/Users/cbarnes/code/ignite/tank-demo/appengine-flask-demo/main.py", line 24, in <module>
    mqttc = mqtt.Client("mqtthtpp")
  File "/Users/cbarnes/code/ignite/tank-demo/appengine-flask-demo/lib/paho/mqtt/client.py", line 403, in __init__
    self._sockpairR, self._sockpairW = _socketpair_compat()
  File "/Users/cbarnes/code/ignite/tank-demo/appengine-flask-demo/lib/paho/mqtt/client.py", line 255, in _socketpair_compat
    listensock.bind(("localhost", 0))
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/dist27/socket.py", line 222, in meth
    return getattr(self._sock,name)(*args)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/remote_socket/_remote_socket.py", line 668, in bind
    self._SetProtoFromAddr(request.mutable_proxy_external_ip(), address)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/remote_socket/_remote_socket.py", line 632, in _SetProtoFromAddr
    proto.set_packed_address(self._GetPackedAddr(address))
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/remote_socket/_remote_socket.py", line 627, in _GetPackedAddr
    AI_NUMERICSERV|AI_PASSIVE):
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/remote_socket/_remote_socket.py", line 338, in getaddrinfo
    canonical=(flags & AI_CANONNAME))
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/remote_socket/_remote_socket.py", line 211, in _Resolve
    canon, aliases, addresses = _ResolveName(name, families)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/remote_socket/_remote_socket.py", line 229, in _ResolveName
    apiproxy_stub_map.MakeSyncCall('remote_socket', 'Resolve', request, reply)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 94, in MakeSyncCall
    return stubmap.MakeSyncCall(service, call, request, response)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 328, in MakeSyncCall
    rpc.CheckSuccess()
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/api/apiproxy_rpc.py", line 156, in _WaitImpl
    self.request, self.response)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 200, in MakeSyncCall
    self._MakeRealSyncCall(service, call, request, response)
  File "/Users/cbarnes/google-cloud-sdk/platform/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 234, in _MakeRealSyncCall
    raise pickle.loads(response_pb.exception())
RuntimeError: error('illegal IP address string passed to inet_pton',)
INFO     2014-06-03 15:14:57,291 module.py:639] default: "GET / HTTP/1.1" 500 -
错误2014-06-03 15:14:57285 wsgi.py:262]
回溯(最近一次呼叫最后一次):
文件“/Users/cbarnes/googlecloudsdk/platform/google\u appengine/google/appengine/runtime/wsgi.py”,第239行,在Handle中
handler=\u config\u handle.add\u wsgi\u中间件(self.\u LoadHandler())
LoadHandler中的文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/runtime/wsgi.py”,第298行
处理程序,路径,err=LoadObject(self.\u处理程序)
LoadObject中的文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/runtime/wsgi.py”,第84行
obj=\uuuuuuuuuuuuuu导入(路径[0])
文件“/Users/cbarnes/code/ignite/tank demo/appengine flask demo/main.py”,第24行,in
mqttc=mqtt.Client(“mqtthtpp”)
文件“/Users/cbarnes/code/ignite/tank demo/appengine flask demo/lib/paho/mqtt/client.py”,第403行,在__
self.\u sockpairR,self.\u sockpairW=\u socketpair\u compat()
文件“/Users/cbarnes/code/ignite/tank-demo/appengine-flask-demo/lib/paho/mqtt/client.py”,第255行,在
bind((“localhost”,0))
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/dist27/socket.py”,第222行,格式为meth
返回getattr(self.\u sock,name)(*args)
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/remote\u socket/\u remote\u socket.py”,第668行,在bind中
self.\u SetProtoFromAddr(request.mutable\u proxy\u external\u ip(),地址)
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/remote\u socket/\u remote\u socket.py”,第632行,位于
协议集\u打包\u地址(self.\u GetPackedAddr(地址))
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/remote\u socket/\u remote\u socket.py”,第627行,位于GetPackedAddr中
AI_NUMERICSERV | AI_被动):
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/remote\u socket/\u remote\u socket.py”,第338行,位于getaddrinfo中
canonical=(标志和名称))
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/remote\u socket/\u remote\u socket.py”,第211行,在
佳能、别名、地址=\u解析名称(名称、族)
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/remote\u socket/\u remote\u socket.py”,第229行,位于
apiproxy\u stub\u map.MakeSyncCall('remote\u socket','Resolve',request,reply)
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/apiproxy\u stub\u map.py”,第94行,在MakeSyncCall中
返回stubmap.MakeSyncCall(服务、调用、请求、响应)
MakeSyncCall中的文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/apiproxy\u stub\u map.py”,第328行
rpc.CheckSuccess()
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/api/apiproxy\u rpc.py”,第156行,在
self.request,self.response)
MakeSyncCall中的文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/ext/remote\u api/remote\u api\u stub.py”,第200行
self.\u MakeRealSyncCall(服务、呼叫、请求、响应)
文件“/Users/cbarnes/google cloud sdk/platform/google\u appengine/google/appengine/ext/remote\u api/remote\u api\u stub.py”,第234行,在MakeRealSyncCall中
提升pickle.load(响应\u pb.exception())
RuntimeError:错误('传递给inet\u pton的非法IP地址字符串',)
INFO 2014-06-03 15:14:57291 module.py:639]默认值:“GET/HTTP/1.1”500-

谢谢

您正在尝试连接到主机
test
和端口
0
,通常您应该使用
localhost
1883

请参见此处的入门示例:

这最终对你有用吗?我认为GAE开始允许套接字连接。