Add twitter timeline task

This commit is contained in:
Sonny Bakker 2020-09-26 22:45:04 +02:00
parent a1ebbe68f5
commit b53c40a3dd

View file

@ -114,6 +114,40 @@ class RedditTokenTask(app.Task):
user.save()
class TwitterTimelineTask(app.Task):
name = "TwitterTimelineTask"
ignore_result = True
def run(self, user_pk):
from newsreader.news.collection.twitter import (
TwitterCollector,
TwitterTimeLineScheduler,
)
try:
user = User.objects.get(pk=user_pk)
except ObjectDoesNotExist:
message = f"User {user_pk} does not exist"
logger.exception(message)
raise Reject(reason=message, requeue=False)
with MemCacheLock("f{user.email}-timeline-task", self.app.oid) as acquired:
if acquired:
logger.info(f"Running twitter timeline task for user {user_pk}")
scheduler = TwitterTimeLineScheduler(user)
timelines = scheduler.get_scheduled_rules()
collector = TwitterCollector()
collector.collect(rules=timelines)
else:
logger.warning(f"Cancelling task due to existing lock")
raise Reject(reason="Task already running", requeue=False)
FeedTask = app.register_task(FeedTask())
RedditTask = app.register_task(RedditTask())
RedditTokenTask = app.register_task(RedditTokenTask())
TwitterTimelineTask = app.register_task(TwitterTimelineTask())