小编Ale*_*exC的帖子

在 Python 中忽略来自第三方包的日志消息

我的 Python 3 应用程序使用标准日志记录包。我想从我的代码中记录所有信息级别的消息,但确保日志记录忽略第三方包发出的所有信息消息,例如请求。

每次使用 requests.get 之前和之后调用 Logger.setLevel(lvl) 应该可以工作,但它非常乏味。我想我可以使用装饰器,但是有更简单的方法吗?

python logging python-3.x

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

如何在Select2中将某些单词的字体更改为粗体

我正在使用select2 4.0.1,并且需要更改某些单词的字体。更具体地说,我需要以粗体/不同字体显示代码AK和HI,如下所示:

<select id="select2" style="width:300px">
    <optgroup label="Alaskan/Hawaiian Time Zone">
        <option value="AK"><strong>AK</strong> Alaska</option>
        <option value="HI"><strong>HI</strong> Hawaii</option>
    </optgroup>
Run Code Online (Sandbox Code Playgroud)

可能吗?我该怎么做?

css jquery html5 jquery-select2

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

How to get a Type from class name in Java

I am deserializing json that contains instances of many different classes, using gson. The following works as long as I know all the classes up front:

    String receivedPayloadStr = receivedMessage.get("payload");
    Type payloadType = getType(receivedMessage.get("type").toString());
    Object typedPayload = gson.fromJson(payloadJson, payloadType);
    System.out.println(typedPayload);
Run Code Online (Sandbox Code Playgroud)

My getType function is as follows:

static Type getType(String typeName){
    switch (typeName){
        case "mypackage1.MyThing1":
            return new TypeToken<MyThing1>() {}.getType();
        case "mypackage2.MyThing1":
            return new TypeToken<MyThing2>() {}.getType();
        default:
            throw new RuntimeException("Unsupported type: " + typeName);
    }
}
Run Code Online (Sandbox Code Playgroud)

短期有效,但既丑陋又脆弱。显然,我们想要一种更易于维护的方法。有没有办法以通用方式实现 getType ,以便支持所有已知类?

编辑:我们不仅限于 gson。如果另一个库使任务更容易,我们可以切换到它。

java gson java-8

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

我的channel.basicConsume为何不等待消息

每当我启动以下代码时:

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    String exchangeName = "direct_logs";
    channel.exchangeDeclare(exchangeName, "direct");
    String queueName = channel.queueDeclare().getQueue();
    channel.queueBind(queueName, exchangeName, "red");
    channel.basicQos(1);

    final Consumer consumer = new DefaultConsumer(channel){
        @Override
        public void handleDelivery(String consumerTag,
                                   Envelope envelope,
                                   AMQP.BasicProperties properties,
                                   byte[] body) throws IOException{
            String message = new String(body, "UTF-8");
            System.out.println(message);
            System.out.println("message received");
        }
    };

    channel.basicConsume(queueName, true, consumer);
Run Code Online (Sandbox Code Playgroud)

它不会像文档中所暗示的那样开始无限循环。相反,它会立即停止。我可以消耗一段时间的唯一方法是channel.basicConsume用循环替换,如下所示:

    DateTime startedAt = new DateTime();
    DateTime stopAt = startedAt.plusSeconds(60);
    long i=0;
    try {
        while (stopAt.compareTo(new …
Run Code Online (Sandbox Code Playgroud)

message-queue rabbitmq java-8

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

为什么 time.sleep 完全停止执行?

以下函数旨在运行循环 20 分钟,处理 SQL 任务(如果可用)。为了避免在没有什么可处理的情况下过多的 SQL 调用,它打算在尝试再次处理任务之前休眠 5 秒:

def main():
    sql = 'some sql task here;'
    stop_time = datetime.today() + timedelta(minutes = 20)
    print('Started at ', datetime.now())
    print('Should stop at', stop_time)
    load_more_rows = True
    with ConnectionParameters.get_conn() as conn:
        while load_more_rows or (datetime.now() < stop_time):
            try:
                res = get_num_processed_batches(conn, sql)
                processed_batch = res > 0
            except Exception as ex:
                log_error(repr(ex))
                processed_batch = False
            if not processed_batch:
                print('Sleeping at ', datetime.now())
                time.sleep(seconds=5)
            load_more_rows = processed_batch
            print('Finished iteration at ', datetime.now())
    print('Stopped …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

为什么Java 8的拆分不会产生最后一个令牌

我希望以下Java代码将字符串拆分为三个项目:

    String csv = "1,2,";
    String[] tokens = csv.split(",");
    System.out.println(tokens.length);
Run Code Online (Sandbox Code Playgroud)

但是,我只收到两件物品.

我必须承认,我没有深入分析这一点,但这对我来说似乎是违反直觉的.Python和C#都在Python中生成三个项目,如下所示:

def test_split(self):
    line = '1,2,'
    tokens = line.split(",")
    for token in tokens:
        print('-' + token)
-1
-2
-
Run Code Online (Sandbox Code Playgroud)

在C#中:

   [Test]
    public void t()
    {
        string s = "1,2,";
        var tokens = s.Split(',');
        foreach (var token in tokens)
        {
            Console.WriteLine("-" + token);
        }
    }
-1
-2
-
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

这是Java 1.8.0_101.

java java-8

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