Commit c413a8eb authored by Cecylia Bocovich's avatar Cecylia Bocovich 💬
Browse files

Add method to close dbpool and call it

We were leaving connections to the database open, which causes some
calls to hang. This adds destructors to the SQLite3 class and the
classes that use it, and refactors some code to make one database
connection per class object. This also makes sure that the destructors
for objects that use databases are actually called.
parent c6cfd912
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ class EmailParser(object):
        self.to_addr = to_addr
        self.locales = []
        self.platforms = self.settings.get("platforms")
        self.conn = SQLite3(self.settings.get("dbname"))

    def __del__(self):
        del self.conn

    def normalize(self, msg):
        # Normalization will convert <Alice Wonderland> alice@wonderland.net
@@ -164,10 +168,8 @@ class EmailParser(object):

    @defer.inlineCallbacks
    def get_locales(self):
        dbname = self.settings.get("dbname")
        conn = SQLite3(dbname)

        locales = yield conn.get_locales()
        locales = yield self.conn.get_locales()
        for l in locales:
            self.locales.append(l[0])

@@ -235,7 +237,6 @@ class EmailParser(object):
        now_str = datetime.now().strftime("%Y%m%d%H%M%S")
        dbname = self.settings.get("dbname")
        test_hid = self.settings.get("test_hid")
        conn = SQLite3(dbname)

        if request["command"]:

@@ -247,7 +248,7 @@ class EmailParser(object):
                system="email parser"
            )

            num_requests = yield conn.get_num_requests(
            num_requests = yield self.conn.get_num_requests(
                id=hid, service=request_service
            )

@@ -262,7 +263,7 @@ class EmailParser(object):
                    ), system="email parser"
                )
            else:
                conn.new_request(
                self.conn.new_request(
                    id=request['id'],
                    command=request['command'],
                    platform=request['platform'],
+6 −5
Original line number Diff line number Diff line
@@ -35,7 +35,10 @@ class TwitterParser(object):
        """
        self.settings = settings
        self.twitter_id = twitter_id
        self.conn = SQLite3(self.settings.get("dbname"))

    def __del__(self):
        del self.conn

    def build_request(self, msg_text, twitter_id, languages, platforms):

@@ -110,16 +113,14 @@ class TwitterParser(object):

        if request["command"]:
            now_str = datetime.now().strftime("%Y%m%d%H%M%S")
            dbname = self.settings.get("dbname")
            conn = SQLite3(dbname)

            hid = hashlib.sha256(str(request['id']).encode('utf-8'))
            # check limits first
            num_requests = yield conn.get_num_requests(
            num_requests = yield self.conn.get_num_requests(
                id=hid.hexdigest(), service=request['service']
            )

            num_requests += yield conn.get_num_requests(
            num_requests += yield self.conn.get_num_requests(
                id=str(request['id']), service=request['service']
            )

@@ -130,7 +131,7 @@ class TwitterParser(object):
                    ), system="twitter parser"
                )
            else:
                conn.new_request(
                self.conn.new_request(
                    id=str(request['id']),
                    command=request['command'],
                    platform=request['platform'],
+2 −0
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ class Sendmail(object):
        dbname = self.settings.get("dbname")
        self.conn = DB(dbname)

    def __del__(self):
        del self.conn

    def get_interval(self):
        """
+3 −0
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ class Twitterdm(object):
        self.twitter = Twitter(settings)
        self.conn = DB(dbname)

    def __del__(self):
        del self.conn

    def get_interval(self):
        """
@@ -115,6 +117,7 @@ class Twitterdm(object):
            yield defer.maybeDeferred(
                tp.parse, e['message_create']['message_data']['text'], message_id
            ).addCallback(tp.parse_callback).addErrback(tp.parse_errback)
            del tp

        # Manage help and links messages separately
        help_requests = yield self.conn.get_requests(
+3 −0
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ class SQLite3(object):
			"sqlite3", dbname, check_same_thread=False
		)

	def __del__(self):
		self.dbpool.close()

	def query_callback(self, results=None):
		"""
		Query callback
Loading