def main(db_name, db_user, db_pass, db_host, sequence_file, zone_dir, **tls_args): # Starting Sequence for change stream sequence = sequence_read(sequence_file) click.echo('Skipping %s changes.' % sequence) # CouchDB Connection tls_args['cert_reqs'] = ssl.CERT_REQUIRED tls_args['ssl_version'] = ssl.PROTOCOL_TLSv1_2 auth = CouchdbResource(filters=[BasicAuth(db_user, db_pass)], **tls_args) server = Server(uri=db_host, resource_instance=auth) db = server[db_name] if sequence == 0: click.echo('Fast track syncing all zones...') c = Consumer(db) result = c.fetch(descending=True, limit=1) # Fast track to this sequence sequence = result['last_seq'] # Go get all the current zones. zones = c.fetch() for zone in zones['results']: domain = zone['id'] try: doc = db.get(docid=domain) except ResourceNotFound, e: click.echo('%s not found (this is normal if the zone was deleted)' % domain) else: zone_update(domain, doc['data'], zone_dir) sequence_write(sequence_file, sequence) # Keep track of our sync point click.echo('Fast track syncing done')
def get_recent_changes(db, limit=500): c = Consumer(db) changes = c.fetch(limit=limit, descending=True, include_docs=True)['results'] for row in changes: yield { 'id':row['id'], 'rev': row['changes'][0]['rev'], 'domain': row['doc'].get('domain', '[no domain]'), 'doc_type': row['doc'].get('doc_type', '[no doc_type]'), }
def get_recent_changes(db, limit=500): c = Consumer(db) changes = c.fetch(limit=limit, descending=True, include_docs=True)['results'] for row in changes: yield { 'id': row['id'], 'rev': row['changes'][0]['rev'], 'domain': row['doc'].get('domain', '[no domain]'), 'doc_type': row['doc'].get('doc_type', '[no doc_type]'), }
def get_recent_changes(db, limit): c = Consumer(db) changes = c.fetch(limit=limit, descending=True, include_docs=True)["results"] for row in changes: yield { "id": row["id"], "rev": row["changes"][0]["rev"], "domain": row["doc"].get("domain", "[no domain]"), "doc_type": row["doc"].get("doc_type", "[no doc_type]"), "date": _guess_date(row["doc"]), }
def process_couchdb_changes(): server = Server(settings.COUCHDB_SERVER) db = server.get_or_create_db('openelm') consumer = Consumer(db) sequence = SyncSequenceCache.objects.get(pk=1) changes = consumer.fetch(filter='record/new_records', since=sequence.last_sequence_id) if changes: for change in changes['results']: record_id = change['id'] copy_photo_for_record.delay(record_id) send_new_record_email.delay(record_id) sequence.last_sequence_id = changes['last_seq'] sequence.save()
def process_couchdb_changes(): server = Server(settings.COUCHDB_SERVER) db = server.get_or_create_db("openelm") consumer = Consumer(db) sequence = SyncSequenceCache.objects.get(pk=1) changes = consumer.fetch(filter="record/new_records", since=sequence.last_sequence_id) if changes: for change in changes["results"]: record_id = change["id"] copy_photo_for_record.delay(record_id) send_new_record_email.delay(record_id) sequence.last_sequence_id = changes["last_seq"] sequence.save()
def queue_once(): c = Consumer(self.db) items = c.fetch(since=0, **item_kwargs)['results'] if items: item_function(items)