本文整理汇总了Python中invenio_indexer.api.RecordIndexer.process_bulk_queue方法的典型用法代码示例。如果您正苦于以下问题:Python RecordIndexer.process_bulk_queue方法的具体用法?Python RecordIndexer.process_bulk_queue怎么用?Python RecordIndexer.process_bulk_queue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类invenio_indexer.api.RecordIndexer
的用法示例。
在下文中一共展示了RecordIndexer.process_bulk_queue方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: update_expired_embargoes
# 需要导入模块: from invenio_indexer.api import RecordIndexer [as 别名]
# 或者: from invenio_indexer.api.RecordIndexer import process_bulk_queue [as 别名]
def update_expired_embargoes():
"""Release expired embargoes every midnight."""
logger = current_app.logger
base_url = urlunsplit((
current_app.config.get('PREFERRED_URL_SCHEME', 'http'),
current_app.config['JSONSCHEMAS_HOST'],
current_app.config.get('APPLICATION_ROOT') or '', '', ''
))
# The task needs to run in a request context as JSON Schema validation
# will use url_for.
with current_app.test_request_context('/', base_url=base_url):
s = B2ShareRecordsSearch(
using=current_search_client,
index='records'
).query(
'query_string',
query='open_access:false AND embargo_date:{{* TO {0}}}'.format(
datetime.now(timezone.utc).isoformat()
),
allow_leading_wildcard=False
).fields([])
record_ids = [hit.meta.id for hit in s.scan()]
if record_ids:
logger.info('Changing access of {} embargoed publications'
' to public.'.format(len(record_ids)))
for record in Record.get_records(record_ids):
logger.debug('Making embargoed publication {} public'.format(
record.id))
record['open_access'] = True
record.commit()
db.session.commit()
indexer = RecordIndexer()
indexer.bulk_index(record_ids)
indexer.process_bulk_queue()
示例2: update_expired_embargos
# 需要导入模块: from invenio_indexer.api import RecordIndexer [as 别名]
# 或者: from invenio_indexer.api.RecordIndexer import process_bulk_queue [as 别名]
def update_expired_embargos():
"""Release expired embargoes every midnight."""
record_ids = AccessRight.get_expired_embargos()
for record in Record.get_records(record_ids):
record['access_right'] = AccessRight.OPEN
record.commit()
db.session.commit()
indexer = RecordIndexer()
indexer.bulk_index(record_ids)
indexer.process_bulk_queue()
示例3: test_record_indexing
# 需要导入模块: from invenio_indexer.api import RecordIndexer [as 别名]
# 或者: from invenio_indexer.api.RecordIndexer import process_bulk_queue [as 别名]
def test_record_indexing(app, queue):
"""Run record autoindexer."""
@before_record_index.connect_via(app)
def remove_schema(sender, json=None, record=None):
if '$schema' in json:
del json['$schema']
models_committed.connect(process_models_committed_signal, sender=app)
with app.app_context():
current_search_client.indices.delete_alias('_all', '_all',
ignore=[400, 404])
current_search_client.indices.delete('*')
aliases = current_search_client.indices.get_aliases()
assert 0 == len(aliases)
runner = CliRunner()
script_info = ScriptInfo(create_app=lambda info: app)
with runner.isolated_filesystem():
result = runner.invoke(cmd, ['destroy', '--yes-i-know'],
obj=script_info)
result = runner.invoke(cmd, ['init'],
obj=script_info)
assert 0 == result.exit_code
with app.app_context():
from invenio_records.models import RecordMetadata
with db.session.begin_nested():
record1 = RecordMetadata(json={
'$schema': ('http://example.com/schemas/' # external site
'records/default-v1.0.0.json'),
'title': 'Test1',
})
db.session.add(record1)
record2 = RecordMetadata(json={
'$schema': {
'$ref': ('http://example.com/schemas/' # external site
'records/default-v1.0.0.json')
},
'title': 'Test2',
})
db.session.add(record2)
db.session.commit()
record_indexer = RecordIndexer(queue=queue)
result = record_indexer.process_bulk_queue()
assert 2 == len(list(result))
response = current_search_client.get(
index='records-default-v1.0.0',
id=record1.id,
)
assert str(record1.id) == response['_id']
response = current_search_client.get(
index='records-default-v1.0.0',
id=record2.id,
)
assert str(record2.id) == response['_id']
db.session.delete(record1)
db.session.commit()
record_indexer.process_bulk_queue()
response = current_search_client.get(
index='records-default-v1.0.0',
id=record1.id,
ignore=404,
)
assert not response['found']
# Clean-up:
with app.app_context():
result = runner.invoke(cmd, ['destroy', '--yes-i-know'],
obj=script_info)
assert 0 == result.exit_code