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 site
docker-compose build
Executando a aplicação:
docker-compose up -d
- Python 3.7+
- Apache Airflow com S3
- OpenJDK8
- Xylose 1.35.1
- OPAC-Schema 2.52
- deepdiff com Murmur3
- lxml 4.3.4
$ airflow initdb
$ airflow scheduler
$ airflow webserver
- Conn Id:
opac_conn - Conn Type:
MongoDB - Host: endereço do host MongoDB
- Schema:
opac - Port: porta do host MongoDB
- Extra:
{"authentication_source": "admin"}
- Conn Id:
kernel_conn - Conn Type:
HTTP - Host: endereço do host do Kernel
- Port: porta do host do Kernel
- Conn Id:
aws_default - Conn Type:
Amazon Web Service - Schema:
httpouhttps - Login: login do Object Store
- Extra:
{"host": "<endereço do host:porta>"}
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 arquivoscilistadeverá 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 Kernel
TIMEOUT_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 emXC_SPS_PACKAGES_DIRpara que sejam copiados paraPROC_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 valorfalseinibe a execução da verificação das páginassci_serialCHECK_SCI_ISSUES_PAGES(opcional, valor padrão étrue): com valorfalseinibe a execução da verificação das páginassci_issuesCHECK_SCI_ISSUETOC_PAGES(opcional, valor padrão étrue): com valorfalseinibe a execução da verificação das páginassci_issuetocCHECK_SCI_ARTTEXT_PAGES(opcional, valor padrão étrue): com valorfalseinibe a execução da verificação das páginassci_arttextCHECK_SCI_PDF_PAGES(opcional, valor padrão étrue): com valorfalseinibe a execução da verificação das páginassci_pdfCHECK_RENDITIONS(opcional, valor padrão étrue): com valorfalseinibe 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 valorfalseinibe 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 valorfalseinibe 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 isFalse, 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:TrueouFalsepara 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 Postgres
No 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