小编Sci*_*nus的帖子

使用fastapi下载文件

我正在查看这个,我看到了在 API 中上传的功能?https://fastapi.tiangolo.com/tutorial/request-files/没有选择 dl .. 我错过了什么吗?我希望为文件下载站点创建一个 api。我应该使用不同的api吗?

from typing import List
from fastapi import FastAPI, Query

app = FastAPI()
PATH "some/path"

@app.get("/shows/")
    def get_items(q: List[str] = Query(None)):
        '''
        Pass path to function.
        Returns folders and files.
        '''

        results = {}

        query_items = {"q": q}
        entry = PATH + "/".join(query_items["q"]) + "/"

        dirs = os.listdir(entry)
        results["folders"] = [val for val in dirs if os.path.isdir(entry+val)]
        results["files"] = [val for val in dirs if os.path.isfile(entry+val)]
        results["path_vars"] = query_items["q"]

        return results
Run Code Online (Sandbox Code Playgroud)

这是python获取路径的文件和目录的示例代码,您可以将路径作为列表返回,并在循环中添加新条目以深入了解文件树。传递文件名应该会触发下载功能,但我似乎无法启动下载功能。

python python-3.x

11
推荐指数
3
解决办法
1万
查看次数

是否可以为 FastApi 添加 uvicorn 日志的响应时间?

我的记录器看起来像这样:

log_config = {
    "version": 1,
    "disable_existing_loggers": True,
    "formatters": {
        "default": {
            "()": "uvicorn.logging.DefaultFormatter",
            "fmt": "%(asctime)s::%(levelname)s::%(name)s::%(filename)s::%(funcName)s::%(message)s",
            "datefmt": "%Y-%m-%dT%H:%M:%S%z",
            "use_colors": False,
        },
        "access": {
            "()": "uvicorn.logging.AccessFormatter",
            "datefmt": "%Y-%m-%dT%H:%M:%S%z",
            "fmt": '%(asctime)s::%(levelprefix)s %(client_addr)s - "%(request_line)s" %(msecs)d %(status_code)s',
            "use_colors": False,
        },
    },
    "handlers":
    {
        "default":
        {
            "formatter": "default",
            "class": 'logging.FileHandler',
            "filename": CONFIG[SECTION]["default"]
        },
        "access":
        {
            "formatter": "access",
            "class": 'logging.FileHandler',
            "filename": CONFIG[SECTION]["access"]
        },
    },
    "loggers":
    {
        "uvicorn": {"handlers": ["default"], "level": "INFO", "propagate": False},
        "uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False},
    }
}
Run Code Online (Sandbox Code Playgroud)

启动配置:

uvicorn.run(
    app="app.main:app", …
Run Code Online (Sandbox Code Playgroud)

python logging fastapi uvicorn

10
推荐指数
1
解决办法
2347
查看次数

如何在多目录项目中正确导入 python 模块?

我有一个基本设置的 python 项目,如下所示:

imptest.py

utils/something.py
utils/other.py
Run Code Online (Sandbox Code Playgroud)

以下是脚本中的内容:

测试文件

#!./venv/bin/python

import utils.something as something
import utils.other as other

def main():
    """
    Main function.
    """

    something.do_something()
    other.do_other()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

东西.py

#import other

def do_something():
    print("I am doing something")


def main():
    """
    Main function
    """

    do_something()
    #other.do_other()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

其他.py

def do_other():
    print("do other thing!")

def main():
    """
    Main function
    """

    do_other()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

imptest.py 是偶尔运行和调用 utils 函数的主文件。

正如你所看到的,我在“something.py”中注释了一些我导入“other”模块进行测试的行。

但是当我想测试 something.py 中的某些功能时,我必须运行文件 something.py 并取消注释导入行。 …

python python-3.x modulenotfounderror

6
推荐指数
1
解决办法
251
查看次数

如何使用 FastApi 将 yt_dlp 的 Progress_hook 返回给最终用户?

我的代码的相关部分看起来像这样:

@directory_router.get("/youtube-dl/{relative_path:path}", tags=["directory"])
def youtube_dl(relative_path, url, name=""):
    """
    Download
    """

    relative_path, _ = set_path(relative_path)

    logger.info(f"{DATA_PATH}{relative_path}")

    if name:
        name = f"{DATA_PATH}{relative_path}/{name}.%(ext)s"
    else:
        name = f"{DATA_PATH}{relative_path}/%(title)s.%(ext)s"

    ydl_opts = {
        "outtmpl": name,
        # "quiet": True
        "logger": logger,
        "progress_hooks": [yt_dlp_hook],
        # "force-overwrites": True
    }

    with yt.YoutubeDL(ydl_opts) as ydl:
        try:
            ydl.download([url])
        except Exception as exp:
            logger.info(exp)
            return str(exp)
Run Code Online (Sandbox Code Playgroud)

我正在使用此 webhook/端点来允许角度应用程序接受 url/名称输入并将文件下载到文件夹。我能够 logger.info .. 等输出 yt_dlp_hook 的值,如下所示:

def yt_dlp_hook(download):
    """
    download Hook

    Args:
        download (_type_): _description_
    """

    global TMP_KEYS

    if download.keys() != TMP_KEYS:
        logger.info(f'Status: {download["status"]}')
        logger.info(f'Dict …
Run Code Online (Sandbox Code Playgroud)

python fastapi yt-dlp

6
推荐指数
1
解决办法
871
查看次数

在Windows中运行Filebeat

我最近使用这些说明在Windows上设置了filebeat

https://www.elastic.co/downloads/beats/filebeat

但它迫使我保持​​cmd提示打开运行命令

filebeat.exe -c filebeat.yml

我想知道是否有办法将其作为后台进程运行?

谢谢.

elasticsearch kibana filebeat

5
推荐指数
1
解决办法
2万
查看次数

Kafka输入到logstash插件

我试图从3个服务器的kafka集群读入logstash,以便将其写入syslog服务器.我已写入syslog,但即使在logstash文档站点上,我也无法找到如何从kafka读入logstash.

Logtash版本:5.2.2 Kafka版本:0.10.2 scala版本:2_11

我去看了api版本,LOGSTASH_CORE_PLUGIN_API ="2.1.12"

这是我尝试使用的配置

input {
#    file
#    {
#        path => "/opt/logstash/NOTICE.TXT"
#
#        #DEBUG below
#        #path => "../fsdfdstt.log"
#        start_position => "beginning"
#        sincedb_path => "/dev/null"
#    }
        kafka
        {
                zk_connect => "localhost:2181"
                topic_id => "kafkatest2"
        }
}
output
{
        syslog
        {
                host => ["targetserver"]
                port => port#
        }
}
Run Code Online (Sandbox Code Playgroud)

但这是我得到的错误......

[2017-03-15T10:24:17,000][ERROR][logstash.inputs.kafka    ] Unknown setting 'zk_connect' for kafka
[2017-03-15T10:24:17,008][ERROR][logstash.inputs.kafka    ] Unknown setting 'topic_id' for kafka
[2017-03-15T10:24:17,015][ERROR][logstash.agent           ] Cannot load an invalid configuration {:reason=>"Something …
Run Code Online (Sandbox Code Playgroud)

elasticsearch apache-kafka logstash logstash-configuration

4
推荐指数
1
解决办法
6910
查看次数

FastAPI 为所有端点创建身份验证

我按照此文档设置了单个用户: https: //fastapi.tiangolo.com/advanced/security/http-basic-auth/

但我只提示输入该端点“/users/me”的用户/通行证。

如何确保所有端点都经过身份验证?

python fastapi

4
推荐指数
1
解决办法
3458
查看次数

从ElasticSearch获取最后一个文档

因此,我有一个弹性搜索索引,并且正在向其发送带有时间戳的文档。我想知道是否有一种方法可以根据时间戳提取最后一个文档。即说要给弹性最后一次给我文档。

谢谢。

elasticsearch sense

3
推荐指数
1
解决办法
7283
查看次数

是否可以将路径传递到 fastapi 端点?

我正在尝试使用 fastapi 创建一个遍历 api 的文件夹。假设我有这样的终点:

@root_router.get("/path/{path}")
def take_path(path):
    logger.info("test %s", path)
    return path
Run Code Online (Sandbox Code Playgroud)

如果我对浏览器执行并调用“URL:PORT/path/path”

它返回“路径”,很简单。但如果我尝试“URL:PORT/path/path/path”,代码甚至不会到达记录器。我认为这是有道理的,因为 API 不存在该端点。但它确实存在于我的服务器上。我已经想出了其他方法来做到这一点,即将路径作为参数数组传递,并用 / 分隔符在代码中重新构建,但是在 url 中传递参数感觉有点笨拙,如果我可以像下面一样移动 url 中的路径我的服务器,那将是理想的。这可行吗?

谢谢。

python python-3.x fastapi

3
推荐指数
1
解决办法
1159
查看次数

将LUA模块添加到nginx

我在redhat 7.5服务器上安装了nginx 1.12,它也有LUA 5.1.4我下载了lua-nginx-module-0.10.13 tar ball并将它放在/ etc/nginx/modules下,但是我无法运行nginx使用LUA auth文件.

我在/ opt/openresty /下也有开放性.

http://openresty.org/en/installation.html 我在这里遵循"make"方法.

不幸的是,这台服务器无法访问互联网,所以我无法从git安装东西,这大大减缓了这一点.我不知道如何在这里添加模块.任何评论都会有所帮助.

这是我的nginx配置看起来像..

server
{
    listen 80;

    access_log  /opt/elk/logs/nginx/access.log  main;

    #auth_basic "admin";
    #auth_basic_user_file "/etc/nginx/passwd";

    client_max_body_size 100M;

    location /
    {
        proxy_pass http://127.0.0.1:9200;

        keepalive_timeout 300s;

        #auth_basic on;
        auth_basic "admin";
        auth_basic_user_file "/etc/nginx/passwd";

        access_by_lua_file '/etc/nginx/authorized.lua';
    }

    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html
    {
        root   /usr/share/nginx/html;
    }
}
Run Code Online (Sandbox Code Playgroud)

lua_access_file导致错误

nginx:[emerg] unknown指令"access_by_lua_file"我是否需要在配置中定义一些"include"来摆脱这个?

谢谢.

lua nginx

2
推荐指数
2
解决办法
4968
查看次数

如何使用 fastapi 日志记录捕获 X-Forwarded-For?

我在这样的函数中运行 FastApi 和 guvicorn:

if __name__ == "__main__":

    uvicorn.run(
        app="app.main:app",
        host="HOSTIP",
        port=8000,
        reload=True,
        # log_config=None,
        log_config=log_config,
        log_level="info"
    )
Run Code Online (Sandbox Code Playgroud)

这就是我的 log_config 的样子:

log_config = {
    "version": 1,
    "disable_existing_loggers": True,
    "formatters": {
        "default": {
            "()": "uvicorn.logging.DefaultFormatter",
            "fmt": "%(asctime)s::%(levelname)s::%(name)s::%(filename)s::%(funcName)s - %(message)s",
            "use_colors": None,
        },
        "access": {
            "()": "uvicorn.logging.AccessFormatter",
            "fmt": '%(asctime)s::%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
        },
    },
    "handlers":
    {
        "default":
        {
            "formatter": "default",
            # "class": 'logging.NullHandler',
            "class": 'logging.FileHandler',
            "filename": CONFIG[SECTION]["default"]
        },
        "error":
        {
            "formatter": "default",
            # "class": 'logging.NullHandler',
            "class": 'logging.FileHandler',
            "filename": CONFIG[SECTION]["error"]
        },
        "access": …
Run Code Online (Sandbox Code Playgroud)

haproxy python-3.x fastapi uvicorn

2
推荐指数
2
解决办法
6527
查看次数

ffmpeg-在ubuntu 18.10错误上将mkv转换为mp4?

我正在尝试使用ffmpeg在Ubuntu 18.10上将某些mkvs转换为mp4,而我不断收到以下错误。阿比的想法?

我正在关注https://linuxconfig.org/install-ffmpeg-on-ubuntu-18-04-bionic-beaver-linux#h2-operating-system-and-software-versions

我已经安装了ffmpeg并安装了:

sudo apt install -y libopus-dev libmp3lame-dev libfdk-aac-dev libvpx-dev libx264-dev yasm libass-dev libtheora-dev libvorbis-dev mercurial cmake
Run Code Online (Sandbox Code Playgroud)

我用输出运行的命令:

ffmpeg -i 'video.mkv' -codec copy 'video.mp4' -strict -2 -y
ffmpeg version 4.0.2-2 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 8 (Ubuntu 8.2.0-7ubuntu1)
  configuration: --prefix=/usr --extra-version=2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg …
Run Code Online (Sandbox Code Playgroud)

ffmpeg

0
推荐指数
2
解决办法
731
查看次数