小编Flo*_*ker的帖子

如何正常停止和启动TGitCache.exe

我想完全删除我的本地存储库,但TGitCache.exe保持该目录的打开句柄.我想优雅地关闭它,删除文件夹并重新启动它.

git tortoisegit

74
推荐指数
3
解决办法
2万
查看次数

东京::选择!但对于未来的 Vec

我有一个Vec我想同时执行的 future(但不一定是并行的)。基本上,我正在寻找某种select类似于tokio::select!但需要 future 集合的函数,或者相反,一种类似于futures::join_all但在第一个 future 完成后返回的函数。

另一个要求是,一旦 future 完成,我可能想向Vec.

有了这样的函数,我的代码大致如下所示:

use std::future::Future;
use std::time::Duration;
use tokio::time::sleep;

async fn wait(millis: u64) -> u64 {
    sleep(Duration::from_millis(millis)).await;
    millis
}

// This pseudo-implementation simply removes the last
// future and awaits it. I'm looking for something that
// instead polls all futures until one is finished, then
// removes that future from the Vec and returns it.
async fn select<F, O>(futures: &mut Vec<F>) -> …
Run Code Online (Sandbox Code Playgroud)

rust rust-tokio

16
推荐指数
1
解决办法
8442
查看次数

在 pydantic 模型中初始化 Literal enum

pydantic 很好地支持常规枚举,并且可以使用枚举实例和枚举来初始化枚举类型字段:

from enum import Enum
from pydantic import BaseModel

class MyEnum(Enum):
    FOO = 'foo'
    BAR = 'bar'

class MyModel(BaseModel):
    x: MyEnum

MyModel(x=MyEnum.BAR)  # Enum instance, works
MyModel(x='foo')       # Enum value, works
MyModel(x='?')         # Fails, as expected
Run Code Online (Sandbox Code Playgroud)

pydantic 还支持typing.Literal

from typing import Literal
from pydantic import BaseModel

class MyModel(BaseModel):
    x: Literal['foo']

MyModel(x='foo')  # Works
MyModel(x='bar')  # Fails, as expected
Run Code Online (Sandbox Code Playgroud)

现在我想将枚举和文字结合起来,即强制字段值等于一个特定的枚举实例。但是,我仍然希望能够传递正确的枚举(即不仅仅是正确的枚举实例),但这似乎不起作用:

from enum import Enum
from typing import Literal
from pydantic import …
Run Code Online (Sandbox Code Playgroud)

python pydantic

14
推荐指数
1
解决办法
8859
查看次数

SQLAlchemy和多个进程的连接问题

我在一个项目中使用PostgreSQL和SQLAlchemy,该项目包含一个启动子进程的主进程.所有这些进程都通过SQLAlchemy访问数据库.

我遇到了可重复的连接失败:前几个子进程正常工作,但一段时间后出现连接错误.这是一个MWCE:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, create_engine
from sqlalchemy.orm import sessionmaker

DB_URL = 'postgresql://user:password@localhost/database'

Base = declarative_base()

class Dummy(Base):
    __tablename__ = 'dummies'
    id = Column(Integer, primary_key=True)
    value = Column(Integer)

engine = None
Session = None
session = None

def init():
    global engine, Session, session
    engine = create_engine(DB_URL)
    Base.metadata.create_all(engine)
    Session = sessionmaker(bind=engine)
    session = Session()

def cleanup():
    session.close()
    engine.dispose()

def target(id):
    init()
    try:
        dummy = session.query(Dummy).get(id)
        dummy.value += 1
        session.add(dummy)
        session.commit()
    finally:
        cleanup()

def main():
    init() …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy multiprocessing

12
推荐指数
1
解决办法
7560
查看次数

重新加载与重新启动 uWSGI 以激活代码更改

在阅读了 uWSGI关于 reloading文档后,我的理解是,对于使用 的应用程序lazy-apps,写入wuWSGI 的主 FIFO 应该触发所有工作程序的重新启动(从而激活 Python 代码中的更改)。

但是,这似乎对我不起作用。我需要重新启动systemd服务 ( systemctl restart myservice) 才能使代码更改生效。我误解了文档,还是我的设置有问题?

我的myservice.service文件看起来像这样:

...
ExecStart=/usr/lib/myservice/virtualenv/bin/uwsgi --ini /etc/myservice/uwsgi.ini
ExecReload=/bin/echo 'w' > /run/myservice/masterfifo
ExecStop=/bin/kill -INT $MAINPID
...
Run Code Online (Sandbox Code Playgroud)

尤其是systemctl reload myservice应该写到w主设备的 FIFO。我可以从日志中systemctl status myservice看到重新加载已执行,但对 HTTP 请求的响应告诉我旧代码仍然处于活动状态。

/etc/myservice/uwsgi.ini是这样的:

[uwsgi]
processes = 16
procname-master = myservice
master-fifo = /run/myservice/masterfifo
touch-chain-reload
listen = 128

thunder-lock
reload-on-as = 4096
limit-as = 8192
max-requests …
Run Code Online (Sandbox Code Playgroud)

python uwsgi systemd

8
推荐指数
1
解决办法
121
查看次数

记录私有泛型类型的公共具体变体

我的另一个问题中,我问如何仅公开公开Foo<u32>私有泛型类型 () 的具体变体 ( Foo<T>)。建议的解决方案如下:

mod internal {
    /// Private documentation of `Foo`.
    pub struct Foo<X> {
        /// Private documentation of `x`.
        pub x: X,
    }

    impl Foo<u32> {
        pub fn foo() -> u32 {
            32
        }
    }

    impl Foo<u8> {
        pub fn foo() -> u8 {
            8
        }
    }
}

/// Public documentation of `FooBar`.
pub type FooBar = internal::Foo<u32>;
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为公共 API 只包含FooBar,但不包含Foo。然而,从文档的角度来看,它是缺乏的。cargo doc这是for的输出FooBar


Cargo 文档截图


如你看到的,

  • 私有类型 …

generics access-modifiers rust rustdoc

7
推荐指数
1
解决办法
141
查看次数

稳定的比较排序与O(n*log(n))时间和O(1)空间复杂度

在浏览维基百科的排序算法列表时,我注意到没有稳定的比较排序具有O(n*log(n))(最坏情况)时间复杂度和O(1)(最坏情况)空间复杂度.这肯定看起来像理论界限,但我找不到更多关于它的信息.

如何证明这一点?

注意:我知道O(n*log(n))比较排序的最坏情况时间复杂度的下限.

sorting algorithm complexity-theory proof

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

如何扩展logging.Logger类?

我想从一个继承自Python logging.Logger类的基本日志类开始.但是,我不确定如何构建我的类,以便我可以建立自定义继承记录器所需的基础知识.

这是我目前在我的logger.py文件中所拥有的:

import sys
import logging
from logging import DEBUG, INFO, ERROR

class MyLogger(object):
    def __init__(self, name, format="%(asctime)s | %(levelname)s | %(message)s", level=INFO):
        # Initial construct.
        self.format = format
        self.level = level
        self.name = name

        # Logger configuration.
        self.console_formatter = logging.Formatter(self.format)
        self.console_logger = logging.StreamHandler(sys.stdout)
        self.console_logger.setFormatter(self.console_formatter)

        # Complete logging config.
        self.logger = logging.getLogger("myApp")
        self.logger.setLevel(self.level)
        self.logger.addHandler(self.console_logger)

    def info(self, msg, extra=None):
        self.logger.info(msg, extra=extra)

    def error(self, msg, extra=None):
        self.logger.error(msg, extra=extra)

    def debug(self, msg, extra=None):
        self.logger.debug(msg, extra=extra)

    def warn(self, msg, extra=None): …
Run Code Online (Sandbox Code Playgroud)

python logging

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

使用Fanstatic的css资源顺序

我正在尝试使用Fanstatic在我自己的CKAN主题中导入多个css资源,如下所示:

{% resource 'my_fanstatic_library/b.css' %}
{% resource 'my_fanstatic_library/a.css' %}
Run Code Online (Sandbox Code Playgroud)

不幸的是,CKAN按字母顺序呈现它们:

<link rel="stylesheet" type="text/css" href="/fanstatic/mytheme/:version:2015-05-11T14:07:18/a.css" />
<link rel="stylesheet" type="text/css" href="/fanstatic/mytheme/:version:2015-05-11T14:07:18/b.css" />
Run Code Online (Sandbox Code Playgroud)

要覆盖我尝试resource.config使用以下内容创建-file的顺序:

[main]

order = b.css a.css

[custom render order]

b.css = 1
a.css = 2

[depends]

a.css = b.css
Run Code Online (Sandbox Code Playgroud)

但遗憾的是渲染顺序没有变化.我将resource.config文件放在文件mytheme/fanstatic/夹中并将其移至mytheme/但没有任何帮助.

ckan fanstatic

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

将mock.patch的autospec选项与自定义Mock子类一起使用

我正在尝试使用(反向移植)模块将间谍附加到类中的方法mock。也就是说,我想创建一个模拟,其工作原理与原始方法类似,但提供常用Mock功能call_count,例如等。

这是我当前使用的代码:

import mock

class MyClass(object):
    def my_method(self, arg):
        return arg + 1

def unit_under_test():
    inst = MyClass()
    return inst.my_method(1)

with mock.patch.object(MyClass, 'my_method', autospec=True,
                       side_effect=MyClass.my_method) as spy:
    result = unit_under_test()
    assert result == 2
    assert spy.call_count == 1
Run Code Online (Sandbox Code Playgroud)

效果很好。现在我想使用 的自定义子类MagicMock来代替。文档说这可以通过参数patchnew_callable完成。但是,new_callableautospec不能一起使用:

class MyMock(mock.MagicMock):
    pass

with mock.patch.object(MyClass, 'my_method', autospec=True,
                       side_effect=MyClass.my_method,
                       new_callable=MyMock) as spy:
    ...
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "./mocktest.py", line 19, in <module>
    new_callable=MyMock) …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-mock

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