move transfers into sqlitedict
This commit is contained in:
parent
9a9185d3d5
commit
9d7a553b95
6 changed files with 69 additions and 45 deletions
|
|
@ -1,17 +1,17 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
|
||||
import os
|
||||
from threading import Thread
|
||||
import time
|
||||
|
||||
from sqlitedict import SqliteDict
|
||||
|
||||
import db
|
||||
import state
|
||||
import settings
|
||||
import update
|
||||
|
||||
from websocket import trigger_event
|
||||
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -21,6 +21,8 @@ class Downloads(Thread):
|
|||
Thread.__init__(self)
|
||||
self.daemon = True
|
||||
self.start()
|
||||
self._dbpath = os.path.join(settings.data_path, 'transfers.db')
|
||||
self.transfers = SqliteDict(self._dbpath, tablename='transfers', autocommit=False)
|
||||
|
||||
def download_updates(self):
|
||||
now = int(time.mktime(time.gmtime()))
|
||||
|
|
@ -32,18 +34,19 @@ class Downloads(Thread):
|
|||
def download_next(self):
|
||||
import item.models
|
||||
self.download_updates()
|
||||
for t in item.models.Transfer.query.filter(
|
||||
item.models.Transfer.added!=None,
|
||||
item.models.Transfer.progress<1).order_by(item.models.Transfer.added):
|
||||
downloads = list(self.transfers.items())
|
||||
downloads.sort(key=lambda t: t[1].get('added'))
|
||||
for itemid, t in downloads:
|
||||
if state.shutdown:
|
||||
return False
|
||||
for u in t.item.users:
|
||||
if state.shutdown:
|
||||
return False
|
||||
if state.nodes.is_online(u.id):
|
||||
logger.debug('DOWNLOAD %s %s', t.item, u)
|
||||
r = state.nodes.download(u.id, t.item)
|
||||
return True
|
||||
if t.get('added') and t.get('progress', -1) < 1:
|
||||
i = item.models.Item.get(itemid)
|
||||
for u in i.users:
|
||||
if state.shutdown:
|
||||
return False
|
||||
if state.nodes.is_online(u.id):
|
||||
logger.debug('DOWNLOAD %s %s', i, u)
|
||||
r = state.nodes.download(u.id, i)
|
||||
return False
|
||||
|
||||
def run(self):
|
||||
|
|
@ -55,6 +58,8 @@ class Downloads(Thread):
|
|||
self.wait(10)
|
||||
|
||||
def join(self):
|
||||
self.transfers.commit()
|
||||
self.transfers.close()
|
||||
return Thread.join(self)
|
||||
|
||||
def wait_online(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue