小编Ada*_*tan的帖子

日志的可排序,可读和标准时间格式

日志中的时间戳格式

大多数日志行包含时间戳和事件描述:

[When] [What]
Run Code Online (Sandbox Code Playgroud)

例如:

[23/Jul/2013:19:35:11 +0000] Processing started.
[23/Jul/2013:19:36:11 +0000] Processed 1000 items.
[23/Jul/2013:19:37:11 +0000] Processing finished successfully.
Run Code Online (Sandbox Code Playgroud)

我正在尝试为我的日志行找到标准时间戳.我的标准是:

  1. 人类可读.我想很容易地了解事件何时发生.
  2. 按字母顺序排序.当我grep从几个文件中发生事件并使用POSIX sort甚至单词/ excel 对它们进行排序时,我希望按字母顺序排序遵循按时间顺序排序.例如,[23/Jul/2012:19:35:11 +0000]并且[22/Jul/2013:19:35:11 +0000]不可排序 - 2013年线将出现在2012年线之前.
  3. 所有常用语言都可轻松解析.如果日志由脚本处理,则应使用标准strptime轻松解析时间戳.

到目前为止,我发现的唯一标准是ISO_8601,它有许多变体(例如2007-04-05T14:30Z2007-03-01T13:00:00Z),并且没有明确的日志行事件标准.

您能为日志行推荐标准时间戳格式吗?

sorting logging datetime strptime

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

第三方登录是否可以在iframe中运行?

我想构建一个简单的Web应用程序,让合作伙伴将其嵌入到他们的站点中.我打算让合作伙伴使用iframe嵌入它,就像youtube一样:

在此输入图像描述

该应用程序需要通过第三方身份验证提供程序(例如Google,Facebook,OpenID)登录.

这样的身份验证方法会成为iframe范围内的问题吗?

iframe facebook google-openid

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

行为:如何从另一个文件导入步骤?

我刚刚开始使用behave,一个使用Gherkin 语法的Pythonic BDD 框架。行为需要一个功能,例如:

Scenario: Calling the metadata API
   Given A matching server
   When I call metadata
   Then metadata response is JSON
   And response status code is 200
Run Code Online (Sandbox Code Playgroud)

还有一个步骤文件,例如:

...
@then('response status code is {expected_status_code}')
def step_impl(context, expected_status_code):
    assert_equals(context.response.status_code, int(expected_status_code))

@then('metadata response is JSON')
def step_impl(context):
    json.loads(context.metadata_response.data)
...
Run Code Online (Sandbox Code Playgroud)

并将它们组合成一个漂亮的测试报告:

检测结果

其中一些步骤 - 例如:

  • metadata response is JSON
  • response status code is {expected_status_code}

在我的许多项目中使用,我想将它们分组到一个通用步骤文件中,我可以导入和重用该文件。

我尝试将有用的步骤提取到单独的文件中并将其导入,但收到以下错误:

@then('response status code is {expected_status_code}')
NameError: name 'then' is not defined
Run Code Online (Sandbox Code Playgroud)

如何创建通用步骤文件并导入它?

python bdd python-behave

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

当浏览器处于后台时,SSE 和 Websockets 是否可以工作?

SSE(服务器发送事件)Websockets都允许从服务器到客户端进行实时消息传递。

当浏览器处于后台且其他程序处于焦点状态时(尤其是在移动浏览器中),这些流协议是否有效?

javascript websocket mobile-browser server-sent-events

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

JSON 架构:验证是否存在一个属性

我想验证一个 JSON 结构,其中必须存在userId密钥或appUserId密钥(恰好是其中之一 - 而不是两者)。

例如,

{ "userId": "X" }
{ "appUserId": "Y" }
Run Code Online (Sandbox Code Playgroud)

有效,但是:

{ "userId": "X", "appUserId": "Y"}
{ }
Run Code Online (Sandbox Code Playgroud)

不是。

如何使用 JSON 架构验证此条件?我已经尝试过oneOf关键字,但它适用于值,而不是键。

python json jsonschema

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

git: 所有以前版本中的 grep 文件

考虑包含以下行的 Python 配置文件:

THEME = 'gum'
Run Code Online (Sandbox Code Playgroud)

THEME键只出现一次,所以当我想知道什么THEME是,我用grep文件:

grep THEME pelicanconf.py
Run Code Online (Sandbox Code Playgroud)

该文件保存在 git 中,我想THEME在所有以前的 git 提交中使用grep for ,以便知道这一行何时更改。

有没有一种优雅的方式来 grep 一个 git 文件的整个历史?

git version-control grep pelican

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

Python:Kombu + RabbitMQ死锁 - 队列被阻止或阻塞

问题

我有一个RabbitMQ服务器,作为我的一个系统的队列中心.在过去一周左右,它的制作人每隔几个小时就会完全停止.

我试过了什么

蛮力

  • 停止消费者会释放锁定几分钟,但随后阻止返回.
  • 重启RabbitMQ解决了几个小时的问题.
  • 我有一些自动脚本可以完成丑陋的重启,但显然远非正确的解决方案.

分配更多内存

cantSleepNow的回答之后,我将分配给RabbitMQ内存增加到90%.服务器有16GB的内存,消息数量不是很高(每天数百万),所以这似乎不是问题.

从命令行:

sudo rabbitmqctl set_vm_memory_high_watermark 0.9
Run Code Online (Sandbox Code Playgroud)

并与/etc/rabbitmq/rabbitmq.config:

[
   {rabbit,
   [
     {loopback_users, []},
     {vm_memory_high_watermark, 0.9}
   ]
   }
].
Run Code Online (Sandbox Code Playgroud)

代码与设计

我为所有消费者和生产者使用Python.

生产者

生产者是提供呼叫的API服务器.每当呼叫到达时,都会打开一个连接,发送一条消息并关闭连接.

from kombu import Connection

def send_message_to_queue(host, port, queue_name, message):
    """Sends a single message to the queue."""
    with Connection('amqp://guest:guest@%s:%s//' % (host, port)) as conn:
        simple_queue = conn.SimpleQueue(name=queue_name, no_ack=True)
        simple_queue.put(message)
        simple_queue.close()
Run Code Online (Sandbox Code Playgroud)

消费者

消费者彼此略有不同,但通常使用以下模式 - 打开连接,并等待消息到达.连接可以长时间保持打开状态(比如几天).

with Connection('amqp://whatever:whatever@whatever:whatever//') as conn:
    while True:
        queue = …
Run Code Online (Sandbox Code Playgroud)

python deadlock rabbitmq blockingqueue kombu

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

管理Firebase Cloud Messaging中的服务器密钥

我刚刚开设了一个针对Android推送消息的Firebase云消息传递项目.

齿轮图标显示一个服务器密钥(由于显而易见的原因,此处混淆):

在此输入图像描述

我希望有多个密钥,因此我可以将它们分发给服务器和开发人员,并在必要时撤销受损密钥.

如何在Firebase中管理(添加和删除)服务器密钥?

firebase google-cloud-messaging firebase-cloud-messaging

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

Node.js:异步调用后执行代码的哪些部分?

异步调用是javascript的固有部分,使用回调通常是处理这些调用的优雅工具.

但是,我不太确定异步操作后代码的分支是如何决定的.例如,以下代码会发生什么?

function f(callback) {
   value = some_async_call();
   if (value) {
       callback(value);
   }
   return(value);
}
Run Code Online (Sandbox Code Playgroud)

这会发生什么?从我的简短JS经验来看,return会发回一个undefined值.但是假设value从异步调用返回true,是否会使用正确的值或undefined值调用回调?

换句话说,是否存在关于在异步调用之后立即执行哪些操作以及哪些操作被延迟直到返回值的规则?

在问之前我尝试了什么

SFTW用于在javascript中分支异步调用,但没有发现任何规范或决定性的内容.

javascript asynchronous node.js

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

Kubernetes是否在主机上安装了emtpyDir卷?

Kubernetes有很多类型的卷,包括emptyDir:

emptyDirPod分配给节点时首先创建卷,并且只要Pod在该节点上运行,就会存在卷.顾名思义,它最初是空的.pod中的容器都可以读取和写入卷中的相同文件emptyDir,但该卷可以安装在每个容器中的相同或不同路径上.当出于任何原因从节点中删除Pod时,将emptyDir永久删除其中的数据.

...

默认情况下,emptyDir卷存储在支持节点的任何介质上.

emtpyDir实际安装的节点上,并访问到一个容器荚之外,或节点FS本身?

kubernetes

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