Add config and fix sesson handling.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
This commit is contained in:
parent
8b7821bcb0
commit
e3743dd6da
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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})
|
||||
|
|
|
|||
Loading…
Reference in New Issue