analytics.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import requests
  2. def post_data(field, keys, value):
  3. db = 'news'
  4. influx_host = 'http://localhost:8086/write?db=%s' % db
  5. headers = {'Content-Type': 'application/octet-stream'}
  6. tmpkeys = ",".join(["%s=%s" % (k, v) for k, v in keys.items()])
  7. if len(keys) > 0:
  8. data = "%s,%s" % (field, tmpkeys)
  9. else:
  10. data = "%s" % field
  11. if type(value) == dict:
  12. values = ",".join(["%s=%s" % (k, v) for k, v in value.items()])
  13. data = "%s %s" % (data, values)
  14. else:
  15. data = "%s value=%s" % (data, value)
  16. print(data)
  17. try:
  18. ret = requests.post(influx_host, data=data, headers=headers)
  19. if ret.status_code // 100 != 2:
  20. print(ret.status_code)
  21. print(ret.text)
  22. print(data, "failed!!")
  23. except Exception as e:
  24. pass
  25. if __name__ == '__main__':
  26. from db import db
  27. d = db()
  28. errors = d.get_sources_with_error()
  29. for e in errors:
  30. val = e['_id'].replace(" ", r"\ ")
  31. post_data('error', {'source': '%s' % val}, e['count'])
  32. for d in d.get_sources_with_count():
  33. val = d['_id'].replace(" ", r"\ ")
  34. post_data('totals', {'source': '%s' % val},
  35. {'value': d['count'], 'weight': d['weight']})