1
0
mirror of https://github.com/djohnlewis/stackdump synced 2024-12-04 23:17:37 +00:00

Fixes #9. Added ability for import_site command to resume importing if the connection to Solr is lost and restored.

This commit is contained in:
Samuel Lai 2014-02-27 20:12:53 +11:00
parent 7764f088c2
commit c11fcfacf6

View File

@ -13,6 +13,7 @@ import re
import urllib2 import urllib2
import socket import socket
import tempfile import tempfile
import traceback
from optparse import OptionParser from optparse import OptionParser
from xml.etree import ElementTree from xml.etree import ElementTree
@ -20,7 +21,7 @@ from sqlobject import sqlhub, connectionForURI, AND, IN, SQLObject, \
UnicodeCol, DateTimeCol, IntCol, DatabaseIndex, dbconnection UnicodeCol, DateTimeCol, IntCol, DatabaseIndex, dbconnection
from sqlobject.sqlbuilder import Delete, Insert from sqlobject.sqlbuilder import Delete, Insert
from sqlobject.styles import DefaultStyle from sqlobject.styles import DefaultStyle
from pysolr import Solr from pysolr import Solr, SolrError
from stackdump.models import Site, Badge, User from stackdump.models import Site, Badge, User
from stackdump import settings from stackdump import settings
@ -538,7 +539,24 @@ class PostContentHandler(xml.sax.ContentHandler):
By default, they are committed immediately. Set the ``commit`` argument By default, they are committed immediately. Set the ``commit`` argument
to False to disable this behaviour. to False to disable this behaviour.
""" """
self.solr.add(questions, commit=commit) while True:
try:
self.solr.add(questions, commit=commit)
break
except SolrError, e:
print('An exception occurred while committing questions - ')
traceback.print_exc(file=sys.stdout)
print('')
while True:
response = raw_input('Try committing the questions again? (y/n) ').lower()
if response not in ('y', 'n'):
print("Answer either 'y' or 'n'. Answering 'n' will abort the import process.")
else:
print('')
if response == 'y':
break
else:
raise
def commit_all_questions(self): def commit_all_questions(self):
""" """