AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-13392257

mascai's questions

Martin Hope
mascai
Asked: 2025-01-17 22:21:55 +0800 CST

É possível criar tópicos do Kafka sem serviço adicional no Docker-Compose?

  • 6

Quero criar e configurar tópicos do kafka na inicialização no docker-compose. Posso fazer isso com a ajuda do serviço de adições (veja init-kafka).

É possível criar tópicos kafka sem serviço adicional? Eu estava tentando usar command: kafka-topics.sh --create --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3o serviço kafka, mas não tive sucesso

Este código está funcionando para mim:

version: "3.8"
    
services:
    zookeeper:
        image: bitnami/zookeeper:latest
        ports:
            - 2181:2181
        environment:
            - ALLOW_ANONYMOUS_LOGIN=yes

    kafka:
        image: bitnami/kafka:latest
        ports:
            - 9092:9092
            - 9093:9093
        environment:
            - KAFKA_BROKER_ID=1
            - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CLIENT://:9093
            - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,CLIENT://localhost:9093
            - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
            - ALLOW_PLAINTEXT_LISTENER=yes
            - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,PLAINTEXT:PLAINTEXT
            - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
        depends_on:
            - zookeeper
    
    init-kafka:
        image: bitnami/kafka:latest
        command: kafka-topics.sh   --create   --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3

        depends_on:
            - kafka

ATUALIZAÇÃO: Eu estava tentando este código (adicionado KAFKA_CREATE_TOPICS), mas não ajudou

kafka:
        image: bitnami/kafka:latest
        ports:
            - 9092:9092
            - 9093:9093
        environment:
            - KAFKA_BROKER_ID=1
            - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CLIENT://:9093
            - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,CLIENT://localhost:9093
            - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
            - ALLOW_PLAINTEXT_LISTENER=yes
            - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,PLAINTEXT:PLAINTEXT
            - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
            - KAFKA_CREATE_TOPICS="my_tasks_topic1:5:1"
        depends_on:
            - zookeeper
apache-kafka
  • 1 respostas
  • 25 Views
Martin Hope
mascai
Asked: 2024-11-11 04:48:32 +0800 CST

"Token inválido" no keycloak

  • 6

Estou tentando usar keycloak no meu aplicativo FastAPI Meu código

from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
from jose import jwt, JWTError
from keycloak import KeycloakOpenID
import requests
import logging
import os

from .config import settings


# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Keycloak configuration
KEYCLOAK_SERVER_URL = settings.KEYCLOAK_SERVER_URL
KEYCLOAK_REALM = settings.KEYCLOAK_REALM
KEYCLOAK_CLIENT_ID = settings.KEYCLOAK_CLIENT_ID
KEYCLOAK_CLIENT_SECRET = settings.KEYCLOAK_CLIENT_SECRET
ALGORITHM = "RS256"
TOKEN_URL = f"{KEYCLOAK_SERVER_URL}/realms/fastapi-realm/protocol/openid-connect/token"


# Initialize KeycloakOpenID
keycloak_openid = KeycloakOpenID(
    server_url=f"{KEYCLOAK_SERVER_URL}",
    client_id=KEYCLOAK_CLIENT_ID,
    realm_name=KEYCLOAK_REALM,
    client_secret_key=KEYCLOAK_CLIENT_SECRET,
    verify=False
)
config_well_known = keycloak_openid.well_known()

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

def verify_token(token: str = Depends(oauth2_scheme)):
    try:
        decoded_token = keycloak_openid.decode_token(
            token,validate=True,
        )
        username = decoded_token['preferred_username']
        logger.info(f"Decoded token: {decoded_token}")
        # Verify the issuer claim
        issuer = decoded_token["iss"]

        expected_issuer = f"{KEYCLOAK_SERVER_URL}/realms/{KEYCLOAK_REALM}"
        I# Token example -- token: {'exp': 1731303036, 'iat': 1731267036, 'jti': 'f1b71d25-4de6-4c03-b5f5-d9726b39d51f', 'iss': 'https://feast-keycloak.pimc-st.innodev.local/realms/feast-realm', 'aud': 'account', 'sub': 'ac48f45e-f26b-4380-bde8-e752febb6d18', 'typ': 'Bearer', 'azp': 'feast-client-id', 'session_state': 'b36cd197-247d-447e-9f3d-6cf1fecae7d6', 'acr': '1', 'allowed-origins': ['https://feast-frontend.pimc-st.innodev.local', '/*', 'http://localhost:5173'], 'realm_access': {'roles': ['default-roles-feast-realm', 'offline_access', 'uma_authorization']}, 'resource_access': {'account': {'roles': ['manage-account', 'manage-account-links', 'view-profile']}}, 'scope': 'profile email', 'sid': 'b36cd197-247d-447e-9f3d-6cf1fecae7d6', 'email_verified': False, 'name': 'A B', 'preferred_username': 'my_username', 'given_name': 'A', 'family_name': 'B', 'email': '[email protected]'}
        logger.info(f"XXX_ issuer={issuer}")
        logger.info(f"XXX_ expected_issuer={expected_issuer}")
        if issuer != expected_issuer:
            raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid issuer")
        
        logger.info(f"username: {username}")
        return decoded_token
    except Exception as e:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token")

No meu main.py tenho o seguinte código

from fastapi import Depends, FastAPI, HTTPException, status, Security


from .keycloak import verify_token, oauth2_scheme, KEYCLOAK_CLIENT_ID, KEYCLOAK_CLIENT_SECRET, TOKEN_URL

app = FastAPI()

@app.post("/project", response_model=schemas.Project, tags=["project",])
def create_project(project: schemas.CreateProject, db: Session = Depends(get_db), payload: dict = Security(verify_token)):
    ...


@app.post("/login")
def get_token(body: schemas.Login):
    data = {
        "grant_type": "password", # TODO: clarify grant_type client_credentials (requires only client id and secret or password - requires password and login)
        "client_id": KEYCLOAK_CLIENT_ID,
        "client_secret": KEYCLOAK_CLIENT_SECRET,
        "password": body.password,
        "username": body.login
    }
    response = requests.post(TOKEN_URL, data=data,  verify=False)
    return JSONResponse(status_code=response.status_code, content=response.json())

Estou obtendo o token com a ajuda do método /login. Então estou aplicando o token assim: insira a descrição da imagem aqui

Para solicitação /projecttenho um erro:

"Token inválido"

Como corrigir o erro?

keycloak
  • 1 respostas
  • 41 Views
Martin Hope
mascai
Asked: 2024-11-01 22:10:18 +0800 CST

Sqlalchemy select AttributeError: o objeto 'dict' não tem atributo

  • 5

Estou construindo um aplicativo fastapi + sqlalchemy

Meu código

sql.py

form sqlalchemy import Table, String, BigInteger, MetaData

metadata = MetaData()

custom_datasets = Table(
    "custom_datasets",
    metadata,
    Column("project_id", String(500), primary_key=True),
    Column("id", BigInteger, primary_key=True),
    Column("name", String(500), unique=True),
    Column("path", String(500), unique=True),
    Column("feature_service", String(500), nullable=False),
    Column("last_updated_timestamp", BigInteger, nullable=False),
)


principal.py

import os
from sqlalchemy.orm import Session
from sqlalchemy import select

def get_db():
    if os.getenv("REGISTRY_CONNECTION_STRING"):
        db = SessionLocal()
        yield db
    yield None


@app.get("/datasets/")
def get_project_registry(body: Dict[str, Any], db: Session = Depends(get_db)):
    print("XXX_ ", custom_datasets.c) # XXX_  ImmutableColumnCollection(custom_datasets.project_id, custom_datasets.id, 
    stmt = select(custom_datasets).where(
        custom_datasets.c.project_id in body.project_ids
    )
    res = db.execute().all()
    return res

Eu tenho um erro

python3.8/site-packages/feast/feature_server.py", line 469, in get_project_registry
    custom_datasets.c.project_id in body.project_ids
AttributeError: 'dict' object has no attribute 'project_ids'

Como corrigir o erro?


Atualizar:

A filtragem não está funcionando para a solicitação

GET http://127.0.0.1:8009/datasets
{
    "project_ids": ["proj_id1"]
}

A tabela se parece com isso:

testdb=# SELECT * FROM  custom_datasets;
 project_id | id | name  |   path    | feature_service | last_updated_timestamp 
------------+----+-------+-----------+-----------------+------------------------
 proj_id1   |  1 | name1 | path/path | service_name    |                      1

Código atualizado

    @app.get("/datasets/")
    def get_project_registry(body: Dict[str, Any], db: Session = Depends(get_db)):
        print("XXX_ ", body['project_ids'])  # prints XXX_  ['proj_id1']
        stmt = select(custom_datasets).where(
            custom_datasets.c.project_id in body['project_ids']
        )
        #stmt = select(custom_datasets)
        res = db.execute(stmt).all()
        return res
python
  • 1 respostas
  • 29 Views
Martin Hope
mascai
Asked: 2024-10-24 19:03:56 +0800 CST

client-credentials é unsupported_grant_type

  • 6

Estou criando o aplicativo FastApi + KeyCloak. Criei o realm, o cliente e o usuário

Configuração do cliente insira a descrição da imagem aqui

Minha configuração de usuário insira a descrição da imagem aqui

Posso obter token com a ajuda desta solicitação

insira a descrição da imagem aqui

Mas para grant_type client-credentialstenho um erro:

{
    "error": "unsupported_grant_type",
    "error_description": "Unsupported grant_type"
}

Qual é a diferença entre "password" e "client-credentials"? E como dar suporte a client-credentials?

keycloak
  • 1 respostas
  • 16 Views
Martin Hope
mascai
Asked: 2024-10-05 23:19:58 +0800 CST

Como posso definir um intervalo de horas após meia-noite no meu crontab?

  • 5

Quero definir o agendamento do crontab no formato 0 19-8 * * * Vejo erro informando que este formato não é suportado

Quero correr a cada hora 19, 20, 21, 22, 23, 24, 0, 1, ... 8

Sei que esse formato está funcionando, 0 19,20,21,22,23,0,1,2,3,4,5,6,7,8 * * *mas como posso definir o intervalo no meu caso?

cron
  • 1 respostas
  • 24 Views
Martin Hope
mascai
Asked: 2024-09-24 17:54:50 +0800 CST

Como aplicar várias seleções para várias junções?

  • 5

Quero unir colunas de várias tabelas. Para uma tabela, a junção funciona bem

select org.catalog_truck.plate_number as "Госномер грузовика",
shift_id as "ID смены",
trip_id as "ID рейса",
*
from core.monitoring_stages
join org.catalog_truck
on vehicle_id = org.catalog_truck.catalog_truck_id
where gen_id = (SELECT max(gen_id)
FROM core.monitoring_tripmachine_generation
WHERE ready=true and timerange_from > '2024-09-23 00:00:00.000 +0300' and timerange_to < '2024-09-23 23:59:59.000 +0300')
ORDER by dtstart

Mas para duas junções (e duas seleções nas duas primeiras linhas, tenho um erro)

select org.catalog_truck.plate_number as "Госномер грузовика",
select org.catalog_field.name as "Поле погрузки",   <--- select for the second join (error in this line)
shift_id as "ID смены",
trip_id as "ID рейса",
*
from core.monitoring_stages
join org.catalog_truck
on vehicle_id = org.catalog_truck.catalog_truck_id
where gen_id = (SELECT max(gen_id)
from core.monitoring_stages <--- second join
join org.catalog_field cf 
on field_id = org.catalog_field.name
FROM core.monitoring_tripmachine_generation
WHERE ready=true and timerange_from > '2024-09-23 00:00:00.000 +0300' and timerange_to < '2024-09-23 23:59:59.000 +0300')
ORDER by dtstart

Texto de erro:

Erro SQL [42601]: ERRO: erro de sintaxe em ou próximo à posição "select": 66

Posição de erro: linha: 2 pos: 65

Como aplicar duas seleções para duas junções?

sql
  • 2 respostas
  • 43 Views
Martin Hope
mascai
Asked: 2024-08-31 06:53:07 +0800 CST

nenhuma conversão correspondente para conversão de estilo funcional de 'boost::uuids::uuid::data_type' para 'utils::span<std::uint8_t>'

  • 7

Estou tentando executar o userver ( https://userver.tech/ ) no MacOS

Estou seguindo este tutorial: https://userver.tech/d3/da9/md_en_2userver_2tutorial_2build.html

Minhas ações:

git clone --depth 1 https://github.com/userver-framework/service_template.git && \
git clone --depth 1 https://github.com/userver-framework/userver.git service_template/third_party/userver && \
cd service_template

brew install $(cat third_party/userver/scripts/docs/en/deps/macos.md | tr '\n' ' ')


make build-release && \
make service-start-release

Tenho um erro:

 25%] Building CXX object third_party/userver/universal/CMakeFiles/userver-universal.dir/src/utils/impl/byte_utils.cpp.o
/Users/mascai/root_folder/dev/projects/49_USERVER/01_tutorial/service_template/third_party/userver/universal/src/utils/boost_uuid7.cpp:49:27: error: no matching conversion for functional-style cast from 'boost::uuids::uuid::data_type' to 'utils::span<std::uint8_t>' (aka 'span<unsigned char>')
      GenerateRandomBlock(utils::span<std::uint8_t>(uuid.data).subspan(8));
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Acho que o problema está relacionado à versão Boost. Minha versão Boost é 1.86.0 e clang 13.0.0.

c++
  • 1 respostas
  • 36 Views
Martin Hope
mascai
Asked: 2023-12-23 05:39:24 +0800 CST

Como pular os últimos elementos da string no loop?

  • 5

Como pular os últimos elementos da string no loop?

Minha solução está funcionando bem

fn main() {
    let s = "123456".to_string();
    for ch in (&s[..s.len()-1]).chars() { // skip the last element
        println!("{}", ch);
    }
}

Mas há algo melhor?

Semelhante a skip() https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.skip que permite pular os primeiros elementos do loop

rust
  • 2 respostas
  • 79 Views
Martin Hope
mascai
Asked: 2023-09-03 16:29:39 +0800 CST

Expressões `let` nesta posição são instáveis

  • 5

Quero iterar duas strings no Rust. Li que não é eficiente usar índices ( nth()método). É por isso que estou usando iteradores


fn main() {
    let s1 = String::from("abacde");
    let s2 = String::from("123456");
    let mut iter1 = s1.chars();
    let mut iter2 = s2.chars();

    while let Some(ch1) = iter1.next() && let Some(ch2) = iter2.next(){
        println!("{:?}", ch1);
    }
}

Eu tenho um erro

erro[E0658]: letexpressões nesta posição são instáveis

Como corrigi-lo?

string
  • 2 respostas
  • 39 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve