| | |
| | | |
| | | # 涨停次数管理 |
| | | class PlaceOrderCountManager: |
| | | __db = 0 |
| | | __redisManager = redis_manager.RedisManager(0) |
| | | __place_order_count_cache={} |
| | | __instance = None |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | | cls.__instance = super(PlaceOrderCountManager, cls).__new__(cls, *args, **kwargs) |
| | | cls.__load_datas() |
| | | return cls.__instance |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | | return cls.__redisManager.getRedis() |
| | | |
| | | @classmethod |
| | | def __incre_place_order_count(cls, code): |
| | | key = "place_order_count-{}".format(code) |
| | | RedisUtils.incrby(cls.__get_redis(), key, 1) |
| | | RedisUtils.expire(cls.__get_redis(), key, tool.get_expire()) |
| | | def __load_datas(cls): |
| | | redis_ = cls.__get_redis() |
| | | try: |
| | | keys = RedisUtils.keys(redis_, "place_order_count-*") |
| | | for k in keys: |
| | | code = k.split("-")[-1] |
| | | count = RedisUtils.get(redis_, k) |
| | | cls.__place_order_count_cache[code] = int(count) |
| | | finally: |
| | | RedisUtils.realse(redis_) |
| | | |
| | | @classmethod |
| | | def __get_place_order_count(cls, code): |
| | | def __incre_place_order_count(self, code): |
| | | if code not in self.__place_order_count_cache: |
| | | self.__place_order_count_cache[code] = 0 |
| | | self.__place_order_count_cache[code] += 1 |
| | | |
| | | key = "place_order_count-{}".format(code) |
| | | count = RedisUtils.get(cls.__get_redis(), key) |
| | | RedisUtils.incrby_async(self.__db, key, 1) |
| | | RedisUtils.expire_async(self.__db, key, tool.get_expire()) |
| | | |
| | | def __get_place_order_count(self, code): |
| | | key = "place_order_count-{}".format(code) |
| | | count = RedisUtils.get(self.__get_redis(), key) |
| | | if count is not None: |
| | | return int(count) |
| | | return 0 |
| | | |
| | | @classmethod |
| | | def place_order(cls, code): |
| | | cls.__incre_place_order_count(code) |
| | | def __get_place_order_count_cache(self, code): |
| | | cache_result = tool.CodeDataCacheUtil.get_cache(self.__place_order_count_cache,code) |
| | | if cache_result[0]: |
| | | return cache_result[1] |
| | | return 0 |
| | | |
| | | @classmethod |
| | | def get_place_order_count(cls, code): |
| | | return cls.__get_place_order_count(code) |
| | | def place_order(self, code): |
| | | self.__incre_place_order_count(code) |
| | | |
| | | @classmethod |
| | | def clear_place_order_count(cls, code): |
| | | def get_place_order_count(self, code): |
| | | return self.__get_place_order_count_cache(code) |
| | | |
| | | def clear_place_order_count(self, code): |
| | | self.__place_order_count_cache[code] = 0 |
| | | key = "place_order_count-{}".format(code) |
| | | RedisUtils.delete(cls.__get_redis(), key) |
| | | RedisUtils.delete_async(self.__db, key) |
| | | |
| | | |
| | | if __name__ == "__main__": |