SqliteSpiderQueue: failback to in-memory SQLite if database cannot be opened (typically due to missing write permissions)

This commit is contained in:
Pablo Hoffman 2010-09-04 03:49:46 -03:00
parent bf34094e5a
commit b800fdcb4d
1 changed files with 9 additions and 1 deletions

View File

@ -1,5 +1,8 @@
import sqlite3
from zope.interface import implements
from scrapy import log
from scrapy.interfaces import ISpiderQueue
from scrapy.utils.sqlite import JsonSqlitePriorityQueue
@ -9,7 +12,12 @@ class SqliteSpiderQueue(object):
implements(ISpiderQueue)
def __init__(self, database=None, table='spider_queue'):
self.q = JsonSqlitePriorityQueue(database, table)
try:
self.q = JsonSqlitePriorityQueue(database, table)
except sqlite3.Error, e:
self.q = JsonSqlitePriorityQueue(':memory:', table)
log.msg("Cannot open SQLite %r - using in-memory spider queue " \
"instead. Error was: %r" % (database, str(e)), log.WARNING)
@classmethod
def from_settings(cls, settings):