Added a periodic ping to maintain mysql connection active

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40152
This commit is contained in:
olveyra 2008-08-07 16:01:25 +00:00
parent 4606b7f9c5
commit 6cfbe78d63
2 changed files with 11 additions and 1 deletions

View File

@ -17,6 +17,7 @@ DEFAULT_ITEM_CLASS = 'scrapy.item.ScrapedItem'
USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)
DOWNLOAD_TIMEOUT = 600
MYSQL_CONNECTION_SETTINGS = {"charset": "utf8" }
MYSQL_CONNECTION_PING_PERIOD = 600
SCHEDULER = 'scrapy.core.scheduler.Scheduler'
SCHEDULER_ORDER = 'BFO' # available orders: BFO (default), DFO

View File

@ -4,6 +4,7 @@ Function for dealing with databases
import re
from scrapy.conf import settings
from scrapy.core import log
from scrapy.core.engine import scrapyengine
def mysql_connect(db_uri, **kwargs):
"""
@ -27,4 +28,12 @@ def mysql_connect(db_uri, **kwargs):
dcopy["passwd"] = "********"
log.msg("Connecting db with settings %s" % dcopy )
return MySQLdb.connect(**d)
conn = MySQLdb.connect(**d)
#this is to maintain active the connection
def _ping():
log.msg("Pinging connection to %s/%s" % (d.get('host'), d.get('db')) )
conn.ping()
scrapyengine.addtask(_ping, settings.getint("MYSQL_CONNECTION_PING_PERIOD", 600))
return conn