コード例 #1
0
ファイル: psp.py プロジェクト: growtopiajaw/mod_python
def dbm_cache_store(srv, dbmfile, filename, mtime, val):

    dbm_type = dbm_cache_type(dbmfile)

    # NOTE: acquiring a lock for the dbm file (also applies to dbm_cache_get)
    # See http://issues.apache.org/jira/browse/MODPYTHON-69
    # In mod_python versions < 3.2 "pspcache" was used as the lock key.
    # ie.  _apache._global_lock(srv, key, index)
    # Assuming there are 32 mutexes (the default in 3.1.x), "pspcache"
    # will hash to one of  31 mutexes (index 0 is reserved). Therefore
    # there is a 1 in 31 chance for a hash collision if a session is
    # used in the same request, which would result in a deadlock. This
    # has been confirmed by testing.
    # We can avoid this by using index 0 and setting the key to None.
    # Lock index 0 is also used by DbmSession for locking it's dbm file,
    # but since the lock is not held for the duration of the request there
    # should not be any additional deadlock issues. Likewise, the lock
    # here is only held for a short time, so it will not interfere
    # with DbmSession file locking.

    _apache._global_lock(srv, None, 0)
    try:
        dbm = dbm_type.open(dbmfile, 'c')
        dbm[filename] = "%d %s" % (mtime, code2str(val))
    finally:
        try:
            dbm.close()
        except:
            pass
        _apache._global_unlock(srv, None, 0)
コード例 #2
0
 def _dbm_file(self, write):
     with self._use_rw_lock(write):
         dbm = self.dbmmodule.open(
             self.filename,
             "w" if write else "r")
         yield dbm
         dbm.close()
コード例 #3
0
ファイル: file.py プロジェクト: DazzFX/SickRage
 def _dbm_file(self, write):
     with self._use_rw_lock(write):
         dbm = self.dbmmodule.open(
             self.filename,
             "w" if write else "r")
         yield dbm
         dbm.close()
コード例 #4
0
ファイル: psp.py プロジェクト: AlfiyaZi/mod_python
def dbm_cache_store(srv, dbmfile, filename, mtime, val):

    dbm_type = dbm_cache_type(dbmfile)

    # NOTE: acquiring a lock for the dbm file (also applies to dbm_cache_get)
    # See http://issues.apache.org/jira/browse/MODPYTHON-69
    # In mod_python versions < 3.2 "pspcache" was used as the lock key.
    # ie.  _apache._global_lock(srv, key, index)
    # Assuming there are 32 mutexes (the default in 3.1.x), "pspcache"
    # will hash to one of  31 mutexes (index 0 is reserved). Therefore
    # there is a 1 in 31 chance for a hash collision if a session is
    # used in the same request, which would result in a deadlock. This
    # has been confirmed by testing.
    # We can avoid this by using index 0 and setting the key to None.
    # Lock index 0 is also used by DbmSession for locking it's dbm file,
    # but since the lock is not held for the duration of the request there
    # should not be any additional deadlock issues. Likewise, the lock
    # here is only held for a short time, so it will not interfere
    # with DbmSession file locking.

    _apache._global_lock(srv, None, 0)
    try:
        dbm = dbm_type.open(dbmfile, 'c')
        dbm[filename] = "%d %s" % (mtime, code2str(val))
    finally:
        try: dbm.close()
        except: pass
        _apache._global_unlock(srv, None, 0)
コード例 #5
0
ファイル: learn.py プロジェクト: seunboi4u/madcow
 def lookup(self, db, key):
     dbm = self.dbm(db)
     try:
         key = encode(key.lower())
         if dbm.has_key(key):
             return decode(dbm[key])
     finally:
         dbm.close()
コード例 #6
0
ファイル: learn.py プロジェクト: seunboi4u/madcow
 def set(self, db, key, val):
     dbm = self.dbm(db)
     try:
         key = encode(key.lower())
         val = encode(val)
         dbm[key] = val
     finally:
         dbm.close()
コード例 #7
0
ファイル: learn.py プロジェクト: Havvy/madcow
 def lookup(self, db, key):
     dbm = self.dbm(db)
     try:
         key = encode(key.lower())
         if dbm.has_key(key):
             return decode(dbm[key])
     finally:
         dbm.close()
コード例 #8
0
 def lookup(self, db, key):
     dbm = self.dbm(db)
     try:
         key = key.lower().encode(self.charset, 'replace')
         if dbm.has_key(key):
             return dbm[key].decode(self.charset, 'replace')
     finally:
         dbm.close()
コード例 #9
0
ファイル: factoids.py プロジェクト: Havvy/madcow
 def set(self, dbname, key, val):
     dbm = self.get_dbm(dbname)
     try:
         key = encode(key.lower())
         val = encode(val)
         dbm[key] = val
     finally:
         dbm.close()
コード例 #10
0
 def set(self, db, key, val):
     dbm = self.dbm(db)
     try:
         key = key.lower().encode(self.charset, 'replace')
         val = val.encode(self.charset, 'replace')
         dbm[key] = val
     finally:
         dbm.close()
コード例 #11
0
 def set(self, dbname, key, val):
     dbm = self.get_dbm(dbname)
     try:
         key = key.lower().encode(self.charset, "replace")
         val = val.encode(self.charset, "replace")
         dbm[key] = val
     finally:
         dbm.close()
コード例 #12
0
 def get(self, dbname, key):
     dbm = self.get_dbm(dbname)
     try:
         key = key.lower().encode(self.charset, "replace")
         val = dbm.get(key)
         if isinstance(val, str):
             val = val.decode(self.charset, "replace")
         return val
     finally:
         dbm.close()
コード例 #13
0
 def unset(self, nick):
     dbm = self.learn.dbm(self.dbname)
     try:
         key = encode(nick.lower())
         if dbm.has_key(key):
             del dbm[key]
             return True
         return False
     finally:
         dbm.close()
コード例 #14
0
ファイル: factoids.py プロジェクト: Havvy/madcow
 def get(self, dbname, key):
     dbm = self.get_dbm(dbname)
     try:
         key = encode(key.lower())
         val = dbm.get(key)
         if isinstance(val, str):
             val = decode(val)
         return val
     finally:
         dbm.close()
コード例 #15
0
 def unset(self, dbname, key):
     dbm = self.get_dbm(dbname)
     try:
         key = key.lower().encode(self.charset, "replace")
         if dbm.has_key(key):
             del dbm[key]
             return True
         return False
     finally:
         dbm.close()
コード例 #16
0
ファイル: links.py プロジェクト: seunboi4u/madcow
 def unset(self, shortcut):
     dbm = self.learn.dbm(self.dbname)
     try:
         key = encode(shortcut.lower())
         if dbm.has_key(shortcut):
             del dbm[shortcut]
             return True
         return False
     finally:
         dbm.close()
コード例 #17
0
ファイル: factoids.py プロジェクト: seunboi4u/madcow
 def unset(self, dbname, key):
     dbm = self.get_dbm(dbname)
     try:
         key = encode(key.lower())
         if dbm.has_key(key):
             del dbm[key]
             return True
         return False
     finally:
         dbm.close()
コード例 #18
0
ファイル: factoids.py プロジェクト: seunboi4u/madcow
 def get(self, dbname, key):
     dbm = self.get_dbm(dbname)
     try:
         key = encode(key.lower())
         val = dbm.get(key)
         if isinstance(val, str):
             val = decode(val)
         return val
     finally:
         dbm.close()
コード例 #19
0
ファイル: factoids.py プロジェクト: Havvy/madcow
 def unset(self, dbname, key):
     dbm = self.get_dbm(dbname)
     try:
         key = encode(key.lower())
         if dbm.has_key(key):
             del dbm[key]
             return True
         return False
     finally:
         dbm.close()
コード例 #20
0
ファイル: realname.py プロジェクト: Havvy/madcow
 def unset(self, nick):
     dbm = self.learn.dbm(self.dbname)
     try:
         key = encode(nick.lower())
         if dbm.has_key(nick):
             del dbm[nick]
             return True
         return False
     finally:
         dbm.close()
コード例 #21
0
ファイル: links.py プロジェクト: Havvy/madcow
 def unset(self, shortcut):
     dbm = self.learn.dbm(self.dbname)
     try:
         key = encode(shortcut.lower())
         if dbm.has_key(shortcut):
             del dbm[shortcut]
             return True
         return False
     finally:
         dbm.close()
コード例 #22
0
ファイル: psp.py プロジェクト: AlfiyaZi/mod_python
def dbm_cache_get(srv, dbmfile, filename, mtime):

    dbm_type = dbm_cache_type(dbmfile)
    _apache._global_lock(srv, None, 0)
    try:
        dbm = dbm_type.open(dbmfile, 'c')
        try:
            entry = dbm[filename]
            t, val = entry.split(" ", 1)
            if int(t) == mtime:
                return str2code(val)
        except KeyError:
            return None
    finally:
        try: dbm.close()
        except: pass
        _apache._global_unlock(srv, None, 0)
コード例 #23
0
def dbm_cache_get(srv, dbmfile, filename, mtime):

    dbm_type = dbm_cache_type(dbmfile)
    _apache._global_lock(srv, None, 0)
    try:
        dbm = dbm_type.open(dbmfile, 'c')
        try:
            entry = dbm[filename]
            t, val = entry.split(" ", 1)
            if int(t) == mtime:
                return str2code(val)
        except KeyError:
            return None
    finally:
        try: dbm.close()
        except: pass
        _apache._global_unlock(srv, None, 0)
コード例 #24
0
ファイル: FilterParser.py プロジェクト: pjz/TMDAng
 def __search_dbm(self, pathname, keys, actions, source):
     """
     Search a DBM-style database.
     """
     import dbm
     dbm = dbm.open(pathname, 'r')
     found_match = 0
     for key in keys:
         if key and key.lower() in dbm:
             found_match = 1
             dbm_value = dbm[key.lower()]
             # If there is an entry for this key,
             # we consider it an overriding action
             # specification.
             if dbm_value:
                 actions.clear()
                 actions.update(self.__buildactions(dbm_value, source))
             dbm.close()
             break
     return found_match
コード例 #25
0
ファイル: info.py プロジェクト: volitilov/Python_learn
# :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

dbm.open(file, flag='r', mode=0o666)
# Открывает и возвращает хранилище
# flag - режим работы
	'r'
	# открытик существующей базы только для чтение (по умалчанию)
	'w'
	# открытие существующей базы только для запись
	'c'
	# открытие файла для записи и чтения, если файла нет, то 
	# создаст новый
	'n'
	# всегда создаёт новую, пустую базу данных, открытую для 
	# чтения и записи
# mode - устанавливает права доступа к файлу


dbm.whichdb(filename)
# Эта функция пытается угадать, какой из нескольких простых 
# модулей базы данных доступен - dbm.gnu, dbm.ndbm или dbm.dumb - 
# следует использовать для открытия данного файла.
# Возвращает одно из следующих значений: None, если файл нельзя 
# открыть, потому что он не читается или не существует; 
# пустая строка (''), если формат файла не может быть догадан; 
# или строку, содержащую требуемое имя модуля, например 
# «dbm.ndbm» или «dbm.gnu».

dbm.close()
# закрытие базы
コード例 #26
0
ファイル: learn.py プロジェクト: seunboi4u/madcow
 def get_db(self, db):
     dbm = self.dbm(db)
     try:
         return dict(dbm)
     finally:
         dbm.close()
コード例 #27
0
 def get_db(self, db):
     dbm = self.dbm(db)
     try:
         return dict(dbm)
     finally:
         dbm.close()