小编ksr*_*ini的帖子

FastAPI 中的可选查询参数

我不明白FastAPI 中的可选查询参数。它与默认值为 的默认查询参数有何不同None

如上面链接中所述,下面的示例中的可选查询参数arg1与 之间有什么区别?arg2arg2

@app.get("/info/")
async def info(arg1: int = None, arg2: int | None = None):
    return {"arg1": arg1, "arg2": arg2}
Run Code Online (Sandbox Code Playgroud)

python optional-parameters fastapi

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

具有多个装饰器的Celery任务不会自动注册任务名称

我有一个看起来像这样的任务

from mybasetask_module import MyBaseTask

@task(base=MyBaseTask)
@my_custom_decorator 
def my_task(*args, **kwargs):
    pass
Run Code Online (Sandbox Code Playgroud)

我的基本任务看起来像这样

from celery import task, Task

class MyBaseTask(Task):
    abstract = True
    default_retry_delay = 10 
    max_retries = 3 
    acks_late = True
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是芹菜工人正在用名称注册任务

'mybasetask_module.__inner'
Run Code Online (Sandbox Code Playgroud)

当我从任务中删除@my_custom_decorator或者我为这个任务提供一个显式名称时,该任务被正确注册(这是包+模块+函数)

from mybasetask_module import MyBaseTask

@task(base=MyBaseTask, name='an_explicit_task_name')
@my_custom_decorator 
def my_task(*args, **kwargs):
    pass
Run Code Online (Sandbox Code Playgroud)

这种行为有望吗?我是否需要做一些事情,以便在我有多个装饰器但没有明确的任务名称时,在第一种情况下使用默认的自动注册名称注册我的任务?

谢谢,

python decorator celery django-celery python-decorators

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

Python跨模块和全局变量导入

我有一个似乎相当基本的问题,但我似乎无法在任何地方找到任何帮助.

file_a.py >>

from xyz import XYZ
class A:
    .
    .
    .

file_b.py >>

import file_a
from file_a import A
class B(A):
    def __init__(self):
        A.__init__(self)

    def someMethod(self):
        XYZ.doSomething()
Run Code Online (Sandbox Code Playgroud)

XYZ.doSomething()无法说出NameError:名称'XYZ'未定义即使从file_a完成的标准导入(如'import sys')似乎也无法使其在file_b中可用.我认为应该工作.我的理解错了吗?如果是,那么有没有办法在文件中包含常见的导入和全局变量?(如果它有帮助,我一直是C++和java程序员,现在我开始使用python.)

python import python-module

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

芹菜工人:如何从所有队列消费?

我有

  • CELERY_CREATE_MISSING_QUEUES = True
  • 没有定义的 CELERY_QUEUES
  • 定义CELERY_DEFAULT_QUEUE = 'default' (直接类型)
  • 一个自定义路由器类,可以动态创建路由,如此票证所示(https://github.com/celery/celery/issues/150).

我看到自定义路由器返回的路由中的新队列被创建,我假设是因为CELERY_CREATE_MISSING_QUEUES.

现在在我运行的工作节点中,我没有传递-Q参数,它只从'default'队列消耗,这似乎与文档一致 -

默认情况下,它将使用CELERY_QUEUES设置中定义的所有队列(如果未指定,则默认为名为celery的队列).

有没有办法让我的工作节点从所有队列中消耗,包括动态创建的队列?

谢谢,

python celery

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

解析 python json 加载中的日期时间

我想解析 (json.loads) 一个 json 字符串,其中包含从 http 客户端发送的日期时间值。

我知道我可以通过扩展默认编码器并覆盖默认方法来编写自定义 json 编码器

class MyJSONEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, (datetime.datetime,)):
            return obj.isoformat()
        elif isinstance(obj, (decimal.Decimal,)):
            return str(obj)
        else:
            return json.JSONEncoder.default(self, obj)
Run Code Online (Sandbox Code Playgroud)

我的问题是 -

  1. 如何自定义默认的 json 解码器?我需要重写解码方法吗?我可以以某种方式为 json 字符串中的每个字段/值覆盖/添加回调函数吗?(我已经看到了 json.decoder.JSONDecoder 和 json.scanner 中的代码,但不知道该怎么做)
  2. 有没有一种简单的方法可以将特定值识别为日期时间字符串?日期值是 ISO 格式的字符串。

谢谢,

javascript python datetime json

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

Elasticsearch分析器标记带有点的字母数字值

我有一个具有此值的文本字段 -

term1-term2-term3-term4-term5-RWHPSA951000155.2013-05-27.log
Run Code Online (Sandbox Code Playgroud)

当我使用analyze API(默认分析器)检查时,我得到了 -

    {
    "tokens": [
        {
            "token": "text",
            "start_offset": 2,
            "end_offset": 6,
            "type": "<ALPHANUM>",
            "position": 1
        },
        {
            "token": "term1",
            "start_offset": 9,
            "end_offset": 14,
            "type": "<ALPHANUM>",
            "position": 2
        },
        {
            "token": "term2",
            "start_offset": 15,
            "end_offset": 20,
            "type": "<ALPHANUM>",
            "position": 3
        },
        {
            "token": "term3",
            "start_offset": 21,
            "end_offset": 26,
            "type": "<ALPHANUM>",
            "position": 4
        },
        {
            "token": "term4",
            "start_offset": 27,
            "end_offset": 32,
            "type": "<ALPHANUM>",
            "position": 5
        },
        {
            "token": "term5",
            "start_offset": 33,
            "end_offset": 38,
            "type": "<ALPHANUM>",
            "position": 6 …
Run Code Online (Sandbox Code Playgroud)

analyzer elasticsearch

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

芹菜击败 - 每个任务的不同时区

我正在使用芹菜殴打来安排一些任务.我可以使用CELERY_TIMEZONE设置来使用crontab计划安排任务,并在上述时区的预定时间运行.

但我希望能够在同一个应用程序中为不同的时区设置多个此类任务(单个django settings.py).我知道在安排任务时需要在哪个时区运行哪个任务.

是否可以为每个任务指定不同的时区?

我正在使用django(1.4)和芹菜(3.0.11)和django芹菜(3.0.11).

我看过这个djcelery.schedulers.DatabaseScheduler类和它的基类,但我无法弄清楚时区的使用方式和位置.我可以编写一个自定义调度程序,可以使每个作业在不同的时区运行吗?

谢谢,

python django django-celery celerybeat

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