Speedup the script to send lifetime to proton

This commit is contained in:
Adrià Casajús 2024-11-05 12:29:54 +01:00
parent 9920ed0538
commit 0eca359012
No known key found for this signature in database
GPG key ID: F0033226A5AFC9B9

View file

@ -7,7 +7,7 @@ from sqlalchemy import func
from app.events.event_dispatcher import EventDispatcher from app.events.event_dispatcher import EventDispatcher
from app.events.generated.event_pb2 import UserPlanChanged, EventContent from app.events.generated.event_pb2 import UserPlanChanged, EventContent
from app.models import PartnerUser from app.models import PartnerUser, User
from app.db import Session from app.db import Session
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
@ -32,20 +32,22 @@ done = 0
start_time = time.time() start_time = time.time()
with_lifetime = 0 with_lifetime = 0
for batch_start in range(pu_id_start, max_pu_id, step): for batch_start in range(pu_id_start, max_pu_id, step):
partner_users = ( users = (
Session.query(PartnerUser).filter( Session.query(User)
PartnerUser.id >= batch_start, PartnerUser.id < batch_start + step .join(PartnerUser, PartnerUser.user_id == User.id)
.filter(
PartnerUser.id >= batch_start,
PartnerUser.id < batch_start + step,
User.lifetime == True, # noqa :E712
) )
).all() ).all()
for partner_user in partner_users: for user in users:
done += 1 # Just in case the == True cond is wonky
if not partner_user.user.lifetime: if not user.lifetime:
continue continue
with_lifetime += 1 with_lifetime += 1
event = UserPlanChanged(plan_end_time=arrow.get("2100-01-01").timestamp) event = UserPlanChanged(plan_end_time=arrow.get("2100-01-01").timestamp)
EventDispatcher.send_event( EventDispatcher.send_event(user, EventContent(user_plan_change=event))
partner_user.user, EventContent(user_plan_change=event)
)
Session.flush() Session.flush()
Session.commit() Session.commit()
elapsed = time.time() - start_time elapsed = time.time() - start_time
@ -55,6 +57,6 @@ for batch_start in range(pu_id_start, max_pu_id, step):
time_remaining = remaining / time_per_alias time_remaining = remaining / time_per_alias
hours_remaining = time_remaining / 60.0 hours_remaining = time_remaining / 60.0
print( print(
f"\PartnerUser {batch_start}/{max_pu_id} {done} {hours_remaining:.2f} mins remaining" f"\PartnerUser {batch_start}/{max_pu_id} {with_lifetime} {hours_remaining:.2f} mins remaining"
) )
print(f"With SL lifetime {with_lifetime}") print(f"With SL lifetime {with_lifetime}")