小编Blu*_*luu的帖子

在Python中,我如何表明我重写了一个方法?

例如,在Java中,@Override注释不仅提供了覆盖的编译时检查,而且还提供了出色的自我记录代码.

我只是在寻找文件(尽管如果它是一些像pylint这样的检查器的指示器,那就是奖金).我可以在某处添加注释或docstring,但是在Python中指示覆盖的惯用方法是什么?

python inheritance overriding self-documenting-code

148
推荐指数
6
解决办法
6万
查看次数

以编程方式安装NLTK语料库/模型,即没有GUI下载器?

我的项目使用NLTK.如何列出项目的语料库和模型要求,以便自动安装?我不想点击nltk.download()GUI,逐个安装软件包.

还有,任何方法来冻结相同的要求列表(如pip freeze)?

install requirements packages corpus nltk

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

py.test:格式失败断言并打印自定义消息

该py.test断言文档说

...如果你用这样的断言指定一条消息:

assert a % 2 == 0, "value was odd, should be even"

然后根本没有断言内省,消息将简单地显示在追溯中.

Python的内置unittest模块也是这样做的,除非你的TestCase设置longMessage = True.

拥有良好的断言格式是测试开发人员友好,而自定义消息更符合业务要求/人性化.当您不在测试的上下文中时,自定义消息特别有用,即它可以回答断言在那里做的事情,而无需查看代码.所以,我想要两条消息.

有没有办法让py.test的好断言内省和格式化并打印自定义消息?

python assert pytest

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

生产者通过消息队列一致地对消费者进行散列?

我有一个生产者,我想通过一致的散列在消费者中一致地分配工作.例如,对于消费者节点X和Y,任务A,B,C应始终转到消费者X,而D,E,F应转到消费者Y.但如果Z加入消费者池,则可能会转移一点.

我不想处理编写自己的逻辑来连接到消费者节点,特别是不管理节点加入和离开池,所以我走了使用RabbitMQ的路径,每个消费者节点都有一个独占队列.

我遇到的一个问题是列出这些队列,因为生产者需要在分配工作之前知道所有可用的队列.AMQP甚至不支持列表队列,这使我不确定我的整个方法.RabbitMQ和Alice(目前已经破碎)添加了这个功能:是否有用于在RabbitMQ上列出队列和交换的API?

这是一个明智的使用兔子?我应该使用消息队列吗?有没有更好的设计,所以队列可以在消费者之间不断分配我的工作,而不是我需要这样做?

producer-consumer amqp rabbitmq consistent-hashing

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

Django 迁移改变选择值

以前已将一个字段添加到我的 MySQL 表之一中:

# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-09-14 00:49
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('my_app', '0102_previous_migrations'),
    ]

    operations = [
        migrations.AddField(
            model_name='my_client',
            name='my_team',
            field=models.CharField(choices=[('Unassigned', 'Unassigned'), ('ACT', 'ACT'), ('Korea', 'Korea'), ('National', 'National')], default='Unassigned', max_length=255, verbose_name='My Team'),
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

因此用户可以在我的 UI 中选择上述选项,并将保存到表 my_client 中:

  • 未分配
  • 行为
  • 朝鲜
  • 国民

更改已部署,现在像我这样的初学者想要更改,即删除韩国并添加 2 个新选项:NSW 和 SA

我该怎么办?我需要再次迁移还是只需要更改模型中的这些选择?

我现在像这样在我的模型中使用它:

class Client(MyAppModel):
    TEAM_CHOICES = (
        ('Unassigned', 'Unassigned'),
        ('ACT', 'ACT'),
        ('Korea', 'Korea'), …
Run Code Online (Sandbox Code Playgroud)

mysql django

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

如何从GWT的序列化策略中删除实现类型?

与此问题相反:如何在GWT的序列化策略白名单中添加类型?

GWT正在将不需要的类型添加到序列化策略中并使我的JS膨胀.如何手动修剪GWT白名单?或者我应该呢?

例如,如果我将接口List放在GWT RPC服务类上,GWT必须生成处理ArrayList,LinkedList,Stack,Vector等的Javascript,即使我的团队知道我们只会返回一个ArrayList.我可以让方法的返回类型为ArrayList,但我喜欢依赖于接口而不是特定的实现.毕竟,也许有一天我们会将其切换并返回例如LinkedList.在这种情况下,我想强制GWT序列化策略仅针对ArrayList和LinkedList进行编译.没有堆栈或向量.

这些隐含的限制有一个我能想到的巨大缺点:团队的新成员开始返回Vectors,这将是一个运行时错误.所以除了标题中的问题,你围绕这个设计的经验是什么?

java gwt interface

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

处理Akka actor绑定邮箱MessageQueueAppendFailedException

为了避免OOM,我使用共享的自定义调度程序限制了我的一些Akka 1.1.3 actor的邮箱大小.例如:

object Static {
    val dispatcher = Dispatchers.newExecutorBasedEventDrivenWorkStealingDispatcher(
        "customDispatcher",
        1000,
        BoundedMailbox(capacity = 10)
    )
}

class MyActor extends Actor {
    self.dispatcher = Static.dispatcher
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想对邮箱溢出做出反应,这样我就可以向上游生产者发出暂停消息(旁注:遗憾的是actor.stop(),它看起来像是等待,并actor.start()会抛出ActorStartException).在队列填满和队列耗尽之间可以接受一些数据丢失.

Akka关于Dispatchers的章节说

当试图将消息发送到演员将抛出一个MessageQueueAppendFailedException("BlockingMessageTransferQueue传输超时"),如果消息不能由pushTimeout规定的时间内被添加到该邮箱.

我在哪里可以捕获此异常?

文档让我觉得我需要myActor ! message在try/catch中包装每个文档.是对的吗?我真的很想集中处理它.我Supervisor可能拦截它并运行我的处理程序吗?

scala fault-tolerance akka

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