Add config and fix sesson handling.

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
This commit is contained in:
Jan Losinski 2018-03-21 07:23:02 +01:00
parent 8b7821bcb0
commit e3743dd6da
5 changed files with 21 additions and 11 deletions

View File

@ -0,0 +1,6 @@
class Config:
def __init__(self, db_uri, refresh_grace=120, consume_interval=30):
self.db_uri = db_uri
self.refresh_grace = refresh_grace
self.consume_interval = consume_interval

View File

@ -4,16 +4,16 @@ import asyncio
from logbook import Logger
from sqlalchemy.orm import joinedload
from wallabag_kindle_consumer.models import User, Job
from wallabag_kindle_consumer.models import User, Job, session_maker
logger = Logger(__name__)
class Consumer:
def __init__(self, wallabag, session, sender, interval=30):
def __init__(self, wallabag, cfg, sender):
self.wallabag = wallabag
self.session = session
self.interval = interval
self.session = session_maker(cfg.db_uri)()
self.interval = cfg.consume_interval
self.sender = sender
self.running = True

View File

@ -33,11 +33,11 @@ class Job(Base):
format = Column(Enum('pdf', 'mobi'))
def make_session(uri):
def session_maker(uri):
Session = sessionmaker(autocommit=False,
autoflush=False,
bind=create_engine(uri))
return scoped_session(Session)
return Session
def re_create_db(uri):

View File

@ -3,17 +3,16 @@ from datetime import datetime, timedelta
from logbook import Logger
from sqlalchemy import func
from wallabag_kindle_consumer.models import User
from .models import User, session_maker
logger = Logger(__name__)
class Refresher:
def __init__(self, session, wallabag):
self.session = session
def __init__(self, config, wallabag):
self.session = session_maker(config.db_uri)()
self.wallabag = wallabag
self.grace = 120
self.grace = config.refresh_grace
def _wait_time(self):
next = self.session.query(func.min(User.token_valid).label("min")).first()
@ -36,6 +35,7 @@ class Refresher:
await asyncio.gather(*refreshes)
self.session.commit()
self.session.remove()
async def _refresh_user(self, user):
logger.info("Refresh token for {}", user.name)

View File

@ -53,6 +53,7 @@ class Wallabag:
user.auth_token = data["access_token"]
user.refresh_token = data["refresh_token"]
user.token_valid = datetime.utcnow() + timedelta(seconds=data["expires_in"])
logger.info("Got new token for {}", user.name)
return True
@ -86,6 +87,9 @@ class Wallabag:
return self.url + url
async def fetch_entries(self, user):
if user.auth_token is None:
logger.warn("No auth token for {}".format(user.name))
return
async with aiohttp.ClientSession() as session:
for tag in self.tags:
params = self._api_params(user, {"tags": tag.tag})