saiguo.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # import datetime
  2. import pymongo
  3. # import time
  4. import logging
  5. # import redis
  6. from twisted.internet import defer, reactor
  7. from ..settings import M_HOST, M_USER, M_PASSWORD, M_POST, M_DB, MATCH_STATUS
  8. from ..utils.helper import Helper
  9. # 滚球足球 插入
  10. class Jieshuqiupipeline(object):
  11. def open_spider(self, spider):
  12. self.mongo = pymongo.MongoClient(host=M_HOST, username=M_USER, password=M_PASSWORD, port=M_POST)
  13. self.db = self.mongo[M_DB]
  14. # cls = redis.Redis(host='192.168.0.110', port=6379, db=0)
  15. @defer.inlineCallbacks
  16. def process_item(self, item, spider):
  17. out = defer.Deferred()
  18. reactor.callInThread(self._do_calculation, item, out)
  19. yield out
  20. defer.returnValue(item)
  21. # def process_item(self, item, spider):
  22. def _do_calculation(self, item, out):
  23. logger = logging.getLogger(__name__)
  24. match_id, score_other = item['id_score']
  25. pt = item['pt']
  26. if pt == 1:
  27. game_code = "zq"
  28. elif pt == 2:
  29. game_code = "lq"
  30. elif pt == 3:
  31. game_code = "wq"
  32. else:
  33. game_code = "bq"
  34. if self.db.match_status35.find({'match_id': match_id}).count() < 1:
  35. status_dict = {"game_code": game_code, "title": "match_status", "source": "hg3535"}
  36. data_list = []
  37. data = {'match_id': match_id, 'status': 2, "is_rollball": 0, "is_today": 0, "is_morningplate": 0, "is_stringscene": 0, "is_horn": 0}
  38. data_list.append(data)
  39. status_dict['data'] = data_list
  40. res = Helper.async_post(MATCH_STATUS, status_dict)
  41. if res:
  42. if "成功" in res:
  43. self.db.match_status35.insert(status_dict)
  44. logger.info('{},赛事结果状态交成功, {}'.format(game_code, res))
  45. logger.info(status_dict)
  46. else:
  47. logger.warning('{},赛事结果状态交失败, {}'.format(game_code, res))
  48. logger.warning(status_dict)
  49. else:
  50. logger.warning('{},赛事结果状态接口异常提交失败, {}'.format(game_code, res))
  51. logger.warning(status_dict)
  52. else:
  53. logger.info('足球赛事结果状态已存在,不提交')
  54. reactor.callFromThread(out.callback, item)