''' Script for enqueuing a notification Create a TTL index using the following code db.expiry_event.createIndex( { "created_at": 1 }, { expireAfterSeconds: 60 } ) ''' import os import pymongo import datetime from bson.json_util import dumps client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['test'] def create_notification(user_id, message): notification = {'user_id': user_id, 'message': message} val = db.expiry_event.find_one({'user_id': user_id}) timestamp = datetime.datetime.utcnow() + datetime.timedelta(minutes=1) event_id = None if val: event_id = val.get('_id') db.expiry_event.update({'_id': val.get('_id')}, {'$set':{'created_at': timestamp}}) else: event_id = db.expiry_event.insert({'user_id': user_id, 'created_at': timestamp}) db.notifications.insert({'event_id': event_id, 'user_id': user_id, 'message': message}) # Call this function for creating a notification and # enqueuing it create_notification('test_user_1', 'random')