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:
http
ouhttps
- 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 arquivoscilista
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 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_DIR
para 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 valorfalse
inibe a execução da verificação das páginassci_serial
CHECK_SCI_ISSUES_PAGES
(opcional, valor padrão étrue
): com valorfalse
inibe a execução da verificação das páginassci_issues
CHECK_SCI_ISSUETOC_PAGES
(opcional, valor padrão étrue
): com valorfalse
inibe a execução da verificação das páginassci_issuetoc
CHECK_SCI_ARTTEXT_PAGES
(opcional, valor padrão étrue
): com valorfalse
inibe a execução da verificação das páginassci_arttext
CHECK_SCI_PDF_PAGES
(opcional, valor padrão étrue
): com valorfalse
inibe a execução da verificação das páginassci_pdf
CHECK_RENDITIONS
(opcional, valor padrão étrue
): com valorfalse
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 valorfalse
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 valorfalse
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 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
:True
ouFalse
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 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_kernel
sync_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