小编Ali*_*nau的帖子

重新定义日志记录根记录器

在我目前的项目中,有数千个代码行,如下所示:

logging.info("bla-bla-bla")
Run Code Online (Sandbox Code Playgroud)

我不想改变所有这些行,但我会改变日志行为.我的想法是将根记录器更改为其他Experimental记录器,该记录器由ini-file配置:

[loggers]
keys =  Experimental

[formatter_detailed]
format = %(asctime)s:%(name)s:%(levelname)s %(module)s:%(lineno)d:  %(message)s

[handler_logfile]
class = FileHandler
args = ('experimental.log', 'a')
formatter = detailed

[logger_Experimental]
level = DEBUG
qualname = Experimental
handlers = logfile
propagate = 0
Run Code Online (Sandbox Code Playgroud)

现在设置新的根记录器是由这段代码完成的:

logging.config.fileConfig(path_to_logger_config)
logging.root = logging.getLogger('Experimental')
Run Code Online (Sandbox Code Playgroud)

重新定义根记录器是否安全?也许有更方便的方法?

我试图使用谷歌并查看stackoverflow问题,但我没有找到答案.

python logging

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

如何验证随机使用的函数的正确性?

有一些应用程序域(例如GameDev),其中应使用随机值创建许多函数以生成其输出.其中一个例子如下:

def generate_key(monster_key_drop_coef):
    key_letters = string.ascii_uppercase
    rand = random.random()
    if monster_key_drop_coef < rand:
        return None

    button = {}
    button["type"] = random.choice([1,2,3])
    button["letter"] = random.choice(key_letters)
    return button
Run Code Online (Sandbox Code Playgroud)

此函数基于多个随机操作生成项目的丢弃.如果要自动验证此功能的正确性,则会出现此问题.生成的值不是确定性的,并且回归测试的编写似乎是不可能的.

我的问题是:

  1. 这可以为这类函数编写有用的回归测试吗?
  2. 在这种情况下,是否有任何通用的方法来创建其他类型的测试?

python testing random regression-testing

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

来自Erlang list-comprehension的意外空列表

我使用list comprehension将数据库行从元组列表转换为映射列表.有一天,我在我的数据库表中添加了一些新列,忘了在任何地方更改代码.因此我发现了一个奇怪的效果:数据库行成为一个空列表.

erl控制台中的代码示例:

> DbRows = [{1, 1, 1}, {2, 2, 2}].
[{1,1,1},{2,2,2}]
> [#{<<"col1">> => Col1, <<"col2">> => Col2} ||{Col1, Col2} <- DbRows].
[]
Run Code Online (Sandbox Code Playgroud)

为什么Erlang不会产生异常错误:在这种情况下,右手边值不匹配

此代码是否正常,或者某些其他语法是否适合执行此类数据转换?

erlang list-comprehension

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

在一个命令中使用来自多个redis数据库的数据

在我目前的项目中,我主动使用redis用于各种目的.当前应用2个redis数据库:

  1. 第一个包含绝对临时数据:有多少用户在线,谁在线,各种管理员的柜台.在启动脚本启动应用程序之前,将清除此数据库.
  2. 第二个数据库用于持久数据,如用户的评级,用户的朋友等.

一切似乎都是正确的,每个人都很开心.

但是,当我开始在我的应用程序中实现新功能时,我发现我需要将一组用户的朋友与一组在线用户相交.这些集存储在不同的redis数据库中,除了更改应用程序体系结构并将所有键移动到一个名称空间(数据库)之外,我还没有发现在redis中执行此任务的任何可能性.

有没有办法使用来自多个数据库的数据在redis中执行某些命令?或者我的redis用例是错误的,我必须修复系统架构?

redis

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