Newer
Older
from funkwhale_network import crawler
from funkwhale_network import db
from funkwhale_network import settings
async def startup(self):
kwargs = crawler.get_session_kwargs()
self.session = aiohttp.ClientSession()#loop=self.loop, **kwargs)
self.pool = await db.get_pool(settings.DB_DSN)
async def poll(self, domain):
async with self.pool.acquire() as conn:
return await crawler.check(conn=conn, session=self.session, domain=domain)
async def poll_all(self):
async with self.pool.acquire() as conn:
for check in await db.get_latest_check_by_domain(conn):
await self.poll(check["domain"])
async def shutdown(self):
await self.session.close()
self.pool.close()
await self.pool.wait_closed()
async def poll(ctx, domain):
session: ClientSession = ctx['session']
pool = await db.get_pool(settings.DB_DSN)
async with pool as conn:
return await crawler.check(conn=conn, session=session, domain=domain)
async def update_all(ctx):
pool = await db.get_pool(settings.DB_DSN)
for check in await db.get_latest_check_by_domain(pool):
await poll(ctx, check["domain"])
class WorkerSettings:
cron_jobs = [
cron(update_all, minute=None)
]
max_concurrent_tasks = 20
shutdown_delay = 5
timeout_seconds = 15