OPAC-Airflow é a configuração SciELO do Apache Airflow para o controle do fluxo de metadados e documentos para a publicação no Site(OPAC), desde o fluxo direto de ingestão legado.
Os metadados são armazenados no Kernel e os arquivos (XMLs, ativos digitais e manifestações) no Minio (também compatível com AWS S3). Para que os dados sejam carregados no site OPAC, são lidos os registros de mudança no Kernel.
kernel_gate: efetua o espelhamento das bases ISIS no Kernelpre_sync_documents_to_kernel: copia os pacotes SPS informadossync_documents_to_kernel: sincroniza com o Kernel e o Minio os documentos de um pacote SPSkernel_changes: carrega os metadados do Kernel no sitedocker-compose build
Executando a aplicação:
docker-compose up -d
$ airflow initdb
$ airflow scheduler
$ airflow webserver
opac_connMongoDBopac{"authentication_source": "admin"}kernel_connHTTPaws_defaultAmazon Web Servicehttp ou https{"host": "<endpoint S3-compatible para upload>", "public_url": "<URL pública para leitura>", "upload_locations": [{"conn_id": "<conn id de upload>", "bucket": "<bucket de upload>", "prefix": "<prefixo de upload>"}]}Exemplo para ambientes onde o endpoint de escrita e a URL pública são diferentes:
{
"region_name": "us-east-1",
"host": "https://ny-s3.storage.bunnycdn.com",
"upload_locations": [
{
"bucket": "minio",
"prefix": "documentstore"
}
],
"public_url": "https://minio.scielo.br"
}
Nesse exemplo, o upload é feito em:
bucket = minio
key = documentstore/{journal}/{scielo_id}/{sha1}.{ext}
E a URL registrada no Kernel continua sendo:
https://minio.scielo.br/documentstore/{journal}/{scielo_id}/{sha1}.{ext}
No Airflow 1.10.12, o S3Hook usa host como endpoint_url do boto3. Por
isso, host deve apontar para o endpoint usado no upload. Para compatibilidade
com a configuração anterior, quando public_url não for informado, host
continua sendo usado também para montar as URLs públicas.
Para um único destino de upload, os campos upload_bucket e upload_prefix
continuam sendo aceitos como atalho. Quando upload_bucket não for informado,
o bucket usado no upload continua sendo documentstore. Quando upload_prefix
não for informado, o objeto continua sendo gravado diretamente no bucket.
Quando for necessário gravar o mesmo arquivo em dois endpoints S3 diferentes,
crie uma conexão Airflow para cada endpoint e use upload_locations com até
dois destinos.
Exemplo da conexão principal aws_default, usada para Bunny e para montar a URL
pública:
{
"region_name": "us-east-1",
"host": "https://ny-s3.storage.bunnycdn.com",
"upload_locations": [
{
"conn_id": "aws_default",
"bucket": "minio",
"prefix": "documentstore"
},
{
"conn_id": "aws_node01_minio",
"bucket": "documentstore"
}
],
"public_url": "https://minio.scielo.br"
}
Exemplo da conexão adicional aws_node01_minio, usada para gravar em
node01-minio.scielo.org:
{
"region_name": "us-east-1",
"host": "https://node01-minio.scielo.org"
}
Nesse caso, o mesmo arquivo é gravado em:
https://ny-s3.storage.bunnycdn.com/minio/documentstore/{journal}/{scielo_id}/{sha1}.{ext}
https://node01-minio.scielo.org/documentstore/{journal}/{scielo_id}/{sha1}.{ext}
A URL registrada no Kernel continua sendo única:
https://minio.scielo.br/documentstore/{journal}/{scielo_id}/{sha1}.{ext}
Também é possível usar public_host em vez de public_url:
{
"region_name": "us-east-1",
"host": "https://ny-s3.storage.bunnycdn.com",
"public_host": "https://minio.scielo.br"
}
BASE_TITLE_FOLDER_PATH: Diretório de origem da base ISIS titleBASE_ISSUE_FOLDER_PATH: Diretório de origem da base ISIS issueWORK_FOLDER_PATH: Diretório para a cópia das bases ISISSCILISTA_FILE_PATH: Caminho onde o arquivo scilista deverá ser lidoXC_SPS_PACKAGES_DIR: Diretório de origem dos pacotes SPS a serem sincronizadosPROC_SPS_PACKAGES_DIR: Diretório de destino dos pacotes SPS a serem sincronizadosNEW_SPS_ZIP_DIR: Diretório de destino dos pacotes SPS otimizadosWEBSITE_URL_LIST: Lista de URL de SciELO Website para validar a disponibilidade de recursos. Exemplo: ["http://www.scielo.br", "https://new.scielo.br"]OBJECT_STORE_URL: URL do Object Store para filtrar os URI existentes nos HTML para que sejam usados na verificação de presença/ausência de menção dos ativos digitais e manifestações do documento no código HTMLKERNEL_FETCH_DATA_TIMEOUT: Timeout para requisições de leitura do KernelTIMEOUT_FOR_SINGLE_REQ (opcional): informa um valor inteiro em segundos para o timeout de uma requisição. Valor padrão 10 segundosTIMEOUT_FOR_MULT_REQ (opcional): informa um valor inteiro em segundos para o timeout total de requisições simultâneas. Valor padrão: 300 segundosPID_LIST_CSV_FILE_NAMES (opcional): Lista de nomes de arquivos CSV que deverão estar presentes em XC_SPS_PACKAGES_DIR para que sejam copiados para PROC_SPS_PACKAGES_DIR/DAG_RUN_ID, e usados na DAG de verificação da disponibilidade dos documentos, ativos digitais e manifestaçõesCHECK_SCI_SERIAL_PAGES (opcional, valor padrão é true): com valor false inibe a execução da verificação das páginas sci_serialCHECK_SCI_ISSUES_PAGES (opcional, valor padrão é true): com valor false inibe a execução da verificação das páginas sci_issuesCHECK_SCI_ISSUETOC_PAGES (opcional, valor padrão é true): com valor false inibe a execução da verificação das páginas sci_issuetocCHECK_SCI_ARTTEXT_PAGES (opcional, valor padrão é true): com valor false inibe a execução da verificação das páginas sci_arttextCHECK_SCI_PDF_PAGES (opcional, valor padrão é true): com valor false inibe a execução da verificação das páginas sci_pdfCHECK_RENDITIONS (opcional, valor padrão é true): com valor false inibe a execução da verificação das manifestações, tal como estão registradas no Object storeCHECK_DIGITAL_ASSETS (opcional, valor padrão é true): com valor false inibe a execução da verificação dos ativos digitais, tal como estão registrados no Object storeCHECK_WEB_HTML_PAGES (opcional, valor padrão é true): com valor false inibe a execução da verificação das páginas Web do padrão /j/:acron/a/:iddoc/format=html&lang=??, com as variações de idioma. Também inibiria a verficação dos componentes do HTML resultante desta consulta, ou seja, a presença dos ativos digitais e a presença dos links para as demais versões do documento (formato e idioma)CHECK_WEB_PDF_PAGES (opcional, valor padrão é true): inibe a execução da verificação das páginas Web do padrão /j/:acron/a/:iddoc/format=pdf&lang=??, com as variações de idiomaIS_SPORADIC: A boolean to define if must send e-mail with the finished of the flow. Default value is False, possible values ['False', 'True'] all strings.AIRFLOW_HOME: Diretório de instalação da aplicaçãoEMIAL_ON_FAILURE_RECIPIENTS: Conta de e-mail para envio de falha, padrão: [email protected]AIRFLOW__SMTP__SMTP_HOST: Endereço do servidor de e-mailAIRFLOW__SMTP__SMTP_USER: Endereço de e-mail responsável pelo envio de e-mailsAIRFLOW__SMTP__SMTP_PASSWORD: Endereço de e-mail responsável pelo envio de e-mailsAIRFLOW__SMTP__SMTP_MAIL_FROM: Endereço de e-mail do remetenteAIRFLOW__SMTP__SMTP_SSL: True ou False para indicar o uso de criptografia no servidor de e-mailAIRFLOW__SMTP__SMTP_PORT: Porta do servidor de e-mailAIRFLOW__SENTRY__SENTRY_DSN: DSN do projeto cadastrado no Sentry para logar tracebacks registrados nas execuçõesPOSTGRES_USER: Usuário para conexão com o PostgresPOSTGRES_PASSWORD: Senha para conexão com o PostgresPOSTGRES_HOST: Endereço do PostgresPOSTGRES_PORT: Porta de rede para conexão com o PostgresPOSTGRES_DB: Nome do banco de dados do Opac-airflow para conexão com PostgresNo Docker:
docker-compose -f docker-compose-dev.yml exec opac-airflow python -m unittest -v
No servidor local:
Dentro da pasta opac-airflow, executar:
export AIRFLOW_HOME=$(pwd)/airflow
export AIRFLOW__CORE__DAGS_FOLDER=$(pwd)/airflow/dags
export AIRFLOW__CORE__BASE_LOG_FOLDER=$(pwd)/airflow/logs
export AIRFLOW__CORE__DAG_PROCESSOR_MANAGER_LOG_LOCATION=$(pwd)/airflow/logs/dag_processor_manager/dag_processor_manager.log
export AIRFLOW__CORE__PLUGINS_FOLDER=$(pwd)/airflow/plugins
export AIRFLOW__SCHEDULER__CHILD_PROCESS_LOG_DIRECTORY=$(pwd)/airflow/logs/scheduler
export POSTGRES_USER=username
export POSTGRES_PASSWORD=''
export POSTGRES_HOST=localhost
export POSTGRES_PORT=5432
export POSTGRES_DB=airflow_externo
cd airflow
python -m unittest -v
sync_isis_to_kernel
pre_sync_documents_to_kernel
sync_documents_to_kernelsync_kernel_to_website
sync_external_content_to_website (executado todo 00:00 do sábado)
Copyright 2018 SciELO [email protected]. Licensed under the terms of the BSD license. Please see LICENSE in the source code for more information.
https://github.com/scieloorg/opac-airflow/blob/master/LICENSE
Content type
Image
Digest
sha256:3abbd27b3…
Size
378.9 MB
Last updated
about 1 month ago
docker pull infrascielo/opac-airflow