analytics.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 s in d.get_sources_with_count():
  33. val = s['_id'].replace(" ", r"\ ")
  34. post_data('totals', {'source': '%s' % val},
  35. {'value': s['count'], 'weight': s['weight']})
  36. for k, v in d.get_keywords_with_count().items():
  37. val = k.replace(" ", r"\ ")
  38. post_data('totals', {'kw': val}, v)