AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-13392257

mascai's questions

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

是否可以在docker-compose中创建不需要额外服务的kafka主题?

  • 6

我想在 docker-compose 中启动时创建和配置 kafka 主题。我可以借助附加服务来完成此操作(请参阅 init-kafka)。

是否可以在不使用额外服务的情况下创建 Kafka 主题?我尝试command: kafka-topics.sh --create --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3在 Kafka 服务中使用,但没有成功

该代码对我有用:

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

更新:我尝试了这个代码(添加了KAFKA_CREATE_TOPICS)但它没有帮助

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 个回答
  • 25 Views
Martin Hope
mascai
Asked: 2024-11-11 04:48:32 +0800 CST

keycloak 中的“无效令牌”

  • 6

我正在尝试在我的 FastAPI 应用程序中使用 keycloak 我的代码

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")

在我的 main.py 中我有以下代码

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())

我通过 /login 方法获取令牌然后我像这样应用令牌: 在此处输入图片描述

对于请求/project我有一个错误:

“无效令牌”

如何修复错误?

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

Sqlalchemy 选择 AttributeError:'dict' 对象没有属性

  • 5

我正在构建 fastapi + sqlalchemy 应用程序

我的代码

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),
)


主程序

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

我有一个错误

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'

如何修复错误?


更新:

过滤对请求不起作用

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

表格如下所示:

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

更新代码

    @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 个回答
  • 29 Views
Martin Hope
mascai
Asked: 2024-10-24 19:03:56 +0800 CST

客户端凭据是 unsupported_grant_type

  • 6

我正在创建 FastApi + KeyCloak 应用程序。已创建领域、客户端和用户

客户端配置 在此处输入图片描述

我的用户配置 在此处输入图片描述

我可以借助此请求获取令牌

在此处输入图片描述

但是对于 grant_typeclient-credentials我有一个错误:

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

密码和客户端凭证有什么区别?如何支持客户端凭证?

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

如何在我的 crontab 中设置午夜以后的小时范围?

  • 5

我想以以下格式设置 crontab 计划,0 19-8 * * * 但出现错误,提示不支持此格式

我想每小时运行一次 19、20、21、22、23、24、0、1、... 8

我知道这种格式是可行的 0 19,20,21,22,23,0,1,2,3,4,5,6,7,8 * * *,但是在我的例子中我该如何设置范围?

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

如何对多个连接应用多个选择?

  • 5

我想连接多个表中的列。对于一个表,连接工作正常

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

但是对于两个连接(以及前两行中的两个选择,我有一个错误)

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

错误文本:

SQL 错误 [42601]:错误:“select”处或附近的语法错误 位置:66

错误位置:行:2 位置:65

如何对两个连接应用两个选择?

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

没有匹配从“boost::uuids::uuid::data_type”到“utils::span<std::uint8_t>”的函数式转换

  • 7

我正在尝试在 MacOS 上运行 userver(https://userver.tech/ )

我正在关注这个教程:https://userver.tech/d3/da9/md_en_2userver_2tutorial_2build.html

我的行动:

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

我有一个错误:

 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));
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我猜问题与 Boost 版本有关。我的 Boost 版本是 1.86.0,clang 是 13.0.0。

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

如何跳过循环中的最后一个字符串元素?

  • 5

如何跳过循环中的最后一个字符串元素?

我的解决方案运行良好

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

但还有更好的吗?

类似于skip() https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.skip 允许跳过循环中的第一个元素

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

这个位置的“let”表达式是不稳定的

  • 5

我想在 Rust 中迭代两个字符串。我读到使用索引(nth()方法)效率不高。这就是我使用迭代器的原因


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);
    }
}

我有一个错误

错误[E0658]:let该位置的表达式不稳定

如何修复它?

string
  • 2 个回答
  • 39 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve