我正在使用urllib2通过HTTP获取页面.当我的请求包含错误时,有时资源会抛出HTTP错误400(错误请求).但是,该响应还包含一个XML元素,该元素提供详细的错误消息.能够看到该错误而不仅仅是urllib2返回的HTTPError异常会非常方便.
尽管有例外,我如何退回文件内容?
我试图找出决定是否添加自动递增整数作为表的主键的"最佳实践".
假设我有一个包含化学元素数据的表格.每个元素的原子序数是唯一的,永远不会改变.因此,不是为每列使用自动递增整数,而是使用原子序数可能更有意义,对吗?
如果我有一张书桌,那也是如此吗?我应该使用ISBN还是主键的自动递增整数?或者包含每个人的SSN的员工表?
当httpd服务关闭时,有时我会遇到错误502的问题.但只有1分钟的网站回来了.
我需要自定义502消息,要求用户等待1分钟再刷新页面,或者在1分钟后将JavaScript或元刷新标签嵌入自动刷新页面.页面的URL必须相同才能产生刷新效果
请注意,我知道自定义错误页面重定向,例如location = /502.html,但该类型的自定义错误页面会将用户重定向到其他页面,如果他们将刷新页面,他们将再次获得错误页面.
任何想法都会非常有帮助.
编辑更新了解更多细节10/06/2012.
我的nginx配置:
user nobody;
# no need for more workers in the proxy mode
worker_processes 24;
error_log /var/log/nginx/error.log crit;
#worker_rlimit_nofile 20480;
events {
worker_connections 109024; # increase for busier servers
use epoll; # you should use epoll here for Linux kernels 2.6.x
}
http {
server_name_in_redirect off;
server_names_hash_max_size 2048;
server_names_hash_bucket_size 256;
include mime.types;
default_type application/octet-stream;
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 20;
ignore_invalid_headers on;
client_header_timeout 50m;
client_body_timeout 50m;
send_timeout …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python的logging模块发送包含日志的电子邮件.我遇到的问题是,每次写日志条目时,都会发送一封电子邮件.如何在脚本结束时对日志消息进行排队并发送一封电子邮件?
我觉得这是用emit()方法完成的,但我无法弄清楚如何使用它.
import logging, logging.handlers
log = logging.getLogger("mylogger")
log.setLevel(logging.DEBUG)
h2 = logging.handlers.SMTPHandler(mailhost='mailserver',
fromaddr='noreply@example.com',
toaddrs=['me@example.com'],
subject='The log',
credentials=('user','pwd'),
secure=None)
h2.setLevel(logging.INFO)
h2.setFormatter(f)
log.addHandler(h2)
log.info("Did something")
log.info("Did something else")
log.info("This would send a third email. :-(")
Run Code Online (Sandbox Code Playgroud) 如何以最有效的方式计算嵌套字典中的子元素数?len()函数不能像我最初期望的那样工作:
>>> food_colors = {'fruit': {'orange': 'orange', 'apple': 'red', 'banana': 'yellow'}, 'vegetables': {'lettuce': 'green', 'beet': 'red', 'pumpkin': 'orange'}}
>>> len(food_colors)
2
>>>
Run Code Online (Sandbox Code Playgroud)
如果我真的想要计算子元素的数量怎么办?(例如,预期结果为"6")是否有更好的方法来执行此操作而不是循环遍历每个元素并总结子元素的数量?在这个特定的应用程序中,我有大约500万个子元素需要计数,每个时钟周期都很重要.
我很少看到野外使用的ENUM数据类型; 开发人员几乎总是只使用如下所示的辅助表:
CREATE TABLE officer_ranks (
id int PRIMARY KEY
,title varchar NOT NULL UNIQUE);
INSERT INTO ranks VALUES (1,'2LT'),(2,'1LT'),(3,'CPT'),(4,'MAJ'),(5,'LTC'),(6,'COL'),(7,'BG'),(8,'MG'),(9,'LTG'),(10,'GEN');
CREATE TABLE officers (
solider_name varchar NOT NULL
,rank int NOT NULL REFERENCES officer_ranks(id) ON DELETE RESTRICT
,serial_num varchar PRIMARY KEY);
Run Code Online (Sandbox Code Playgroud)
但是也可以使用用户定义的类型/ ENUM显示相同的内容:
CREATE TYPE officer_rank AS ENUM ('2LT', '1LT','CPT','MAJ','LTC','COL','BG','MG','LTG','GEN');
CREATE TABLE officers (
solider_name varchar NOT NULL
,rank officer_rank NOT NULL
,serial_num varchar PRIMARY KEY);
Run Code Online (Sandbox Code Playgroud)
(使用PostgreSQL显示的示例,但其他RDBMS具有类似的语法)
我看到使用ENUM的最大缺点是从应用程序内部更新更加困难.它也可能会使曾经习惯使用SQL DB的缺乏经验的开发人员感到困惑.
假设信息大多是静态的(工作日名称,月份名称,美国军队等级),使用ENUM是否有任何优势?
有没有ASM只是不够低水平的情况?毕竟,装配工仍然需要组装.有没有人用二进制编写程序?我只是想知道为什么这样做可能是实用的,或者即使它可能在现代计算机上有理论上的原因.
我试图通过从网站下载证书并提取其公钥来验证消息的SHA1签名.在SO(这里和这里)的其他地方有一些示例代码,但是我还没弄清楚我做错了什么.
import requests
from M2Crypto import BIO, RSA, EVP, X509
def verify_message(cert_url, msg, sig):
cert_text = requests.get(cert_url, verify=True)
cert = X509.load_cert_string(cert_text.content)
pubkey = cert.get_pubkey()
sig = sig.decode('base64')
# Write a few files to disk for debugging purposes
f = open("sig", "wb")
f.write(sig)
f.close()
f = open("msg", "w")
f.write(msg)
f.close()
f = open("mypubkey.pem", "w")
f.write(pubkey.get_rsa().as_pem())
f.close()
pubkey.reset_context(md='sha1')
pubkey.verify_init()
pubkey.verify_update(msg)
assert pubkey.verify_final(sig) == 1
Run Code Online (Sandbox Code Playgroud)
这给了我以下断言错误:
File "/tmp/test.py", line 71, in verify_message
assert pubkey.verify_final(sig) == 1
AssertionError
Run Code Online (Sandbox Code Playgroud)
但是,如果我openssl …
来自MS SQL世界,我倾向于大量使用存储过程.我目前正在编写一个应用程序使用了很多PostgreSQL plpgsql函数.我想做的是回滚特定函数中包含的所有INSERTS/UPDATES如果我在其中的任何一点得到异常.
我最初的印象是每个函数都包含在它自己的事务中,并且异常会自动回滚所有内容.但是,情况似乎并非如此.我想知道我是否应该将保存点与异常处理结合使用?但我并不真正了解事务和保存点之间的区别,以了解这是否是最好的方法.有什么建议吗?
CREATE OR REPLACE FUNCTION do_something(
_an_input_var int
) RETURNS bool AS $$
DECLARE
_a_variable int;
BEGIN
INSERT INTO tableA (col1, col2, col3)
VALUES (0, 1, 2);
INSERT INTO tableB (col1, col2, col3)
VALUES (0, 1, 'whoops! not an integer');
-- The exception will cause the function to bomb, but the values
-- inserted into "tableA" are not rolled back.
RETURN True;
END; $$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud) python ×5
postgresql ×2
sql ×2
binary ×1
cpu ×1
cryptography ×1
logging ×1
m2crypto ×1
nginx ×1
plpgsql ×1
temperature ×1
transactions ×1