示例#1
0
文件: phases.py 项目: 4xxi/resonances
 def delete(self, for_resonance_id):
     if self._phase_storage == PhaseStorage.redis:
         REDIS.delete(_get_rediskey_name(for_resonance_id))
     elif self._phase_storage == PhaseStorage.db:
         conn = engine.connect()
         conn.execute("DELETE FROM %s WHERE resonance_id = %s;" % (TABLENAME, for_resonance_id))
     elif self._phase_storage == PhaseStorage.file:
         filepath = get_file_name(for_resonance_id)
         if os.path.exists(filepath):
             os.remove(filepath)
示例#2
0
def clear_phases(start: int, stop: int, planets: Tuple[str]):
    conn = engine.connect()
    resonance_ids = []
    redis_logged = False
    for resonance in get_resonances(start, stop, False, planets):
        try:
            REDIS.delete('%s:%i' % (TABLENAME, resonance.id))
        except ConnectionError:
            redis_logged = _log_redis(redis_logged)

        resonance_ids.append(str(resonance.id))

        filename = get_file_name(resonance.id)
        if os.path.exists(filename):
            os.remove(filename)

    conn.execute("DELETE FROM %s WHERE resonance_id = ANY('{%s}'::int[]);" %
                 (TABLENAME, ','.join(resonance_ids)))
示例#3
0
文件: find.py 项目: 4xxi/resonances
def _build_redis_phases(by_aei_data: List[str], in_key: str,
                        orbital_elem_set: ResonanceOrbitalElementSetFacade) \
        -> List[Dict[str, float]]:
    pipe = REDIS.pipeline()
    serialized_phases = []
    for year, value in orbital_elem_set.get_resonant_phases(by_aei_data):
        serialized_phase = dict(year=year, value=value)
        pipe = pipe.rpush(in_key, '%s' % serialized_phase)
        serialized_phases.append(serialized_phase)
    pipe.execute()
    return serialized_phases
示例#4
0
文件: phases.py 项目: 4xxi/resonances
 def load(self, resonance_id: int) -> List[float]:
     phases = None
     if self._phase_storage == PhaseStorage.redis:
         phases = [
             json.loads(x.decode('utf-8').replace('\'', '"'))['value']
             for x in REDIS.lrange(_get_rediskey_name(resonance_id), 0, -1)
         ]
     elif self._phase_storage == PhaseStorage.db:
         conn = engine.connect()
         result = conn.execute('SELECT value FROM %s WHERE resonance_id=%i' %
                               (TABLENAME, resonance_id))
         phases = [x['value'] for x in result]
     elif self._phase_storage == PhaseStorage.file:
         with open(get_file_name(resonance_id)) as f:
             phases = [json.loads(x.replace('\'', '"'))['value'] for x in f]
     return phases
示例#5
0
文件: phases.py 项目: 4xxi/resonances
def _save_redis(serialized_phases: List[Dict[str, float]], in_key: str):
    pipe = REDIS.pipeline()
    for phase in serialized_phases:
        pipe = pipe.rpush(in_key, '%s' % phase)
    pipe.execute()