我正在使用该logging
模块记录来自应用程序服务器的消息。更具体地说,我使用StreamHandler将消息记录到stdout / stderr,并用于Supervisord
将这些消息记录到文件中(因为服务器进程由Supervisord
)。
我的主要问题是,日志文件中的消息顺序是否总是真实地反映代码的执行顺序?例如,如果一条消息A: this is log msg A
出现在B: this is log msg B
日志文件中的消息之前,那么我们可以100%确定记录消息A
的代码行是在记录消息的代码行之前执行的B
,即使两条消息中的时间戳都在日志文件是一样的吗?
我想知道在使用以下方法访问同一类的方法内的类变量(dict)时性能是否有任何差异:
self.class_variable_dict.add(some_key, some_value)
Run Code Online (Sandbox Code Playgroud)
和
ClassName.class_variable_dict.add(some_key, some_value)
Run Code Online (Sandbox Code Playgroud)
显然,只要没有具有相同名称的实例变量,两者都可以工作,但是有任何理由/用例我们应该优先选择其中一个吗?
使用Supervisor在生产中运行redis是一个好习惯吗?
我已经google了一下,但没有看到很多这样做的例子.如果没有,在生产中运行redis的正确方法是什么?
如果处理程序返回变量以及模板:
self.render('page.html', enabled=enabled)
Run Code Online (Sandbox Code Playgroud)
其中enabled
是一个布尔变量.
到目前为止,我知道我可以做以下事情:
{% if enabled %}
...
{% end %}
Run Code Online (Sandbox Code Playgroud)
在模板的HTML部分内.
但是我们可以enabled
在Tornado模板中有条件地运行一些基于此变量的javascript代码吗?换句话说,我们可以在嵌入模板的javascript中访问此变量的值吗?
在我的本地计算机上,我有一个存储库设置如下
* remote origin
Fetch URL: git@github.com:me/my_project.git
Push URL: git@github.com:me/my_project.git
HEAD branch: master
Remote branches:
mac-master tracked
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date)
Run Code Online (Sandbox Code Playgroud)
本地只有master
分支,我想总是将我的本地主服务器推送到远程分支.我应该这样做: mac-master
git push origin master:mac-master
Run Code Online (Sandbox Code Playgroud)
每次我需要推?如果没有,这样做的正确方法是什么?
我在这里看到了类似失败的报告:https://groups.google.com/forum/?fromgroups =#!topic/swsjs/QNtA1_p_arU,但我的问题似乎有所不同.
我的设置:客户端连接到https://www.mysite.com/sockjs
SockJS,实际页面服务于https://www.mysite.com/blah/blah/blah
.页面上的所有外部元素(例如css和js)都使用https,包括SockJS-Client(https://d1fxtkz8shb9d2.cloudfront.net/sockjs-0.3.js,最新版本应为0.3.4).后端由SockJS-Tornado制作.
问题1:我指定使用以下协议:
var options = {protocols_whitelist: ["websocket", "xhr-streaming", "xdr-streaming", "xhr-polling", "xdr-polling", "iframe-htmlfile", "iframe-eventsource", "iframe-xhr-polling"], debug: true};
conn = new SockJS("https://www.mysite.com/sockjs", options);
Run Code Online (Sandbox Code Playgroud)
但是,似乎IE9只使用最差的协议iframe-htmlfile
,因为我在服务器日志中看到以下内容:
INFO:root:200 GET /sockjs/info?t=1353062888578 (127.0.0.1) 0.51ms
INFO:root:200 GET /sockjs/iframe.html (127.0.0.1) 22.21ms
Run Code Online (Sandbox Code Playgroud)
为什么不使用xdr-streaming
或xdr-polling
?在SockJS doc中,它将这两个协议标记为'IE8,9(cookies = no)',这是否意味着SockJS只会在浏览器禁用cookie时使用它们?
问题2:使用协议时iframe-htmlfile
,用户将'Only Secure Content is Displayed'
在页面上收到警告,这表示混合内容问题.但是,其他测试的浏览器都没有报告此警告(例如Chrome,FireFox,Safari),并且如前所述,页面上的每个外部资源都通过https提供.为什么是这样?是否与此特定协议有关iframe-htmlfile
?
与此同时,SockJS努力连接到服务器并发送消息.这是我在服务器日志中看到的:
INFO:root:200 GET /sockjs/info?t=1353062888578 (127.0.0.1) 0.51ms
INFO:root:200 GET /sockjs/iframe.html (127.0.0.1) 22.21ms
INFO:root:200 GET …
Run Code Online (Sandbox Code Playgroud) 我有一些涉及两个矩阵的计算,两个矩阵都以numpy
数组表示.
在计算之后,我获得floats
另一个numpy
数组中表示的向量.
我想向上/向下舍入此结果向量中的值,例如,如果计算给出:
array([1.33333, 2.56, 9.99999, 16.0])
Run Code Online (Sandbox Code Playgroud)
那么它应该舍入到:
array([1, 3, 10, 16])
Run Code Online (Sandbox Code Playgroud)
最快的方法是什么?
我面临的情况是,我需要在JavaScript的多个函数的开头和结尾添加相同的代码块.例如
function funcA () {
// code block 1
...
// code unique to funcA
...
// code block 2
...
}
function funcB () {
// code block 1
...
// code unique to funcB
...
// code block 2
...
}
function funcC () {
// code block 1
...
// code unique to funcC
...
// code block 2
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道在这里使用什么是正确的模式来减少重复.
我正在使用pysqlite
与SQLite数据库进行对话,我想知道检查UPDATE
SQL语句是否实际上已成功更新表中的内容的正确方法是什么.
是否有一个变量,我可以在执行后快速检查pysqlite
?
我有一个以元组为键的dict,我想获得最大的可用值,比如当前在字典中的元组键的第二个元素.例如,给定:
my_dict = {('a', 1):value_1, ('b', 1):value_2, ('a', 2):value_3, ('c', 3):value_4, ('b', 2):value_5}
Run Code Online (Sandbox Code Playgroud)
所以键的第二个元素的最大值是3.
获得此值的最快方法是什么?
我有一个绑定到Tornado中的处理程序的URL.例如
(r'/browse/article/([a-zA-Z0-9_-]+)/([0-9]*)', ArticleHandler),
Run Code Online (Sandbox Code Playgroud)
但是,参数的数量并不固定,有些将是/browse/article/blah
,其他的将是/browse/article/blah/2
.换句话说,最后一个参数可能存在也可能不存在.
是否仍然可以使用单个处理程序来处理这种情况?如果是这样,我应该如何制定正则表达式字符串以匹配所有可能的情况?
给出这样的代码:
if f(a) == 1:
# do sth A
elif f(a) == 2:
# do sth B
elif f(a) == 3:
# do sth C
else:
# do sth D
Run Code Online (Sandbox Code Playgroud)
表达式f(a)
只执行/评估一次吗?或者它得到执行/评估的每一种情况下if
还是elif
?此外,复合语句是否有所不同:例如
if f(a) == 1:
# do sth A
elif f(a) == 2 and a > 0:
# do sth B
elif f(a) == 3 and a < 0:
# do sth C
else:
# do sth D
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何f(a)
评估?每个案例一次性或单独一次?
我有一个类变量my_set
,它是一个集合,我在其中添加字符串:
MyClass.my_set.add(self.some_string_property)
我的问题是运行上面的类的实例可能随时收集垃圾,当发生这种情况时,我认为我失去了它some_string_property
的my_set
类变量.
为了保持some_string_property
在my_set
每个实例,我需要创建一个副本并存储该副本到my_set
.这样做的正确方法是什么?我已经尝试过该 copy
模块,但它不适用于字符串.