[Python-Dev] Azure event hub network access (original) (raw)

syed khalid syedk at pacificloud.com
Fri Feb 6 06:26:20 CET 2015


I am getting http error 404. I am able to access the site via telnet which eliminates network issues. Here is the code and subsequent errors

user/bin/python import sys import azure import socket

from azure.servicebus import ( _service_bus_error_handler )

from azure.servicebus.servicebusservice import ( ServiceBusService, ServiceBusSASAuthentication )

from azure.http import ( HTTPRequest, HTTPError )

from azure.http.httpclient import _HTTPClient

class EventHubClient(object):

def sendMessage(self,body,partition): eventHubHost = "pac-ns.servicebus.windows.net"

httpclient = _HTTPClient(service_instance=self)

sasKeyName = "pac-pl"
sasKeyValue = "IhkEepQPLfSy9jo6H2Yxxxxxxxxxxxxxxxxxxxx="

authentication = ServiceBusSASAuthentication(sasKeyName,sasKeyValue)

request = HTTPRequest()
request.method = "POST"
request.host = eventHubHost
request.protocol_override = "https"

request.path = "/myhub/publishers/" + partition +

"/messages?api-version=20 14-05" request.body = body request.headers.append(('Content-Type', 'application/atom+xml;type=entry;cha rset=utf-8'))

authentication.sign_request(request, httpclient)

request.headers.append(('Content-Length', str(len(request.body))))

status = 0

try:
    resp = httpclient.perform_request(request)
    status = resp.status
except HTTPError as ex:
    status = ex.status

return status

class EventDataParser(object):

def getMessage(self,payload,sensorId): host = socket.gethostname() body = "{ "DeviceId" : "" + host + "","SensorData": [ "

msgs = payload.split(",")
first = True

for msg in msgs:
# print msg
  sensorType = msg.split(":")[0]

sensorValue = msg.split(":")[1] if first == True: first = False else: body += ","

  body += "{ \"SensorId\" : \"" + sensorId + "\", \"SensorType\" : \""

hubClient = EventHubClient() parser = EventDataParser() hostname = socket.gethostname() sensor = sys.argv[2]

body = parser.getMessage(sys.argv[1],sensor) hubStatus = hubClient.sendMessage(body,hostname)

return the HTTP status to the caller

print hubStatus print hostname print sensor

~/IOT/AZURE$ python send.py temperature:22,humidity:20 deviceid

404 ubuntu deviceid { "DeviceId" : "ubuntu","SensorData": [ { "SensorId" : "deviceid", "SensorType" : "temperature", "SensorValue" : 22 },{ "SensorId" : "deviceid", "SensorType" : "humidity", "SensorValue" : 20 }]}

-- Syed Khalid -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20150205/fac9b6c1/attachment.html>



More information about the Python-Dev mailing list