J'ai écrit un script python pour l'abonné MQTT qui fonctionne parfaitement bien localement.Comment exécuter des scripts d'abonné MQTT écrits en python sur google app engine
Python script Abonné
import paho.mqtt.client as mqtt
import os,json
filePath = "logs.csv"
def initiateFile():
if (os.path.exists(filePath) == False):
fileObj = open(filePath, "w")
fileObj.write("Label,x,y,z\n")
def readFile():
data = open(filePath,'r').read()
return data
def decodeJson(jsonString):
jsonObject = json.loads(jsonString)
label = jsonObject.keys()[0]
x = jsonObject[label]['x']
y = jsonObject[label]['y']
z = jsonObject[label]['z']
return label.encode("utf-8")+","+x+","+y+","+z;
def writeInFile(newData):
oldData = readFile()
fileObj = open(filePath, "w")
fileObj.write(oldData+newData+"\n")
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc)+" "+str(client))
client.subscribe("sensors/test")
initiateFile()
def on_message(client, userdata, msg):
print msg.payload
writeInFile(decodeJson(msg.payload))
def on_disconnect(client, userdata, rc):
print("Disconnect, reason: " + str(rc))
print("Disconnect, reason: " + str(client))
client = mqtt.Client()
client.username_pw_set(username, password)
client.connect(broker,port)
client.on_connect = on_connect
client.on_message = on_message
client.loop_forever()
client.on_disconnect = on_disconnect
Mais quand j'ai essayé de le déployer sur Google Cloud, je suis "ImportError: Aucun module nommé paho.mqtt.client" d'erreur.
Alors j'ai essayé des solutions suivantes mais nous avons eu erreur
1.) Déclarer la bibliothèque paho-mqtt dans app.yaml
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
libraries:
- name: paho-mqtt
version: "1.3.0"
***ERROR: (gcloud.app.deploy) An error occurred while parsing file: [C:\Users\uni5p_000\Desktop\RMIT_Studies\Sem_1\Cloud_Computing\Practical\GOOGLE\python-docs-samples\appengine\standard\hello_world\app.yaml]
the library "paho-mqtt" is not supported
in "C:\Users\uni5p_000\Desktop\RMIT_Studies\Sem_1\Cloud_Computing\Practical\GOOGLE\python-docs-samples\appengine\standard\hello_world\app.yaml", line 11, column 19***
2.) pip installer paho-mqtt sur la coque Nuage
***OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/paho_mqtt-1.3.0.dist-info'***
Comment procéder maintenant?
double possible de [Comment inclure les bibliothèques Python tiers dans Google App Engine?] (Https://stackoverflow.com/questions/14850853/how-to-include-third-party-python-libraries- in-google-app-engine) – hardillb
Si vous utilisez un environnement standard, cela ne fonctionnera pas même si vous avez trié l'installation et le socket. L'environnement standard ne prend pas en charge les requêtes longues. Face à face ne demande qu'une seule exécution pendant une minute et les files d'attente de tâches sont limitées à 10 minutes. Je suppose que vous pouvez vous connecter/déconnecter constamment sur chaque demande déclenchée par cron –