小编ipa*_*ola的帖子

在Python中使用契约式设计

我希望在工作中开始在大量基于Python的项目上使用DBC,并且想知道其他人对它有什么经验.到目前为止,我的研究结果如下:

我的问题是:您是否将DBC与Python一起用于成熟的生产代码?它的效果如何/值得努力?你会推荐哪些工具?

python design-by-contract

42
推荐指数
5
解决办法
9771
查看次数

龙卷风真的没有阻挡吗?

Tornado宣称自己是"一个相对简单,无阻塞的 Web服务器框架",旨在解决C10k问题.但是,看看包装MySQLdb的数据库包装器,我遇到了以下代码:

def _execute(self, cursor, query, parameters):
    try:
        return cursor.execute(query, parameters)
    except OperationalError:
        logging.error("Error connecting to MySQL on %s", self.host)
        self.close()
        raise
Run Code Online (Sandbox Code Playgroud)

据我知道的MySQLdb的,它是建立在顶部的呼叫libmysqlclient,被拦截.

我是否正确地认为长时间运行的查询会导致整个Tornado服务器无响应直到它完成或代码上有魔力?

python mysql tornado nonblocking

19
推荐指数
2
解决办法
9884
查看次数

多线程C应用程序应如何处理失败的malloc()?

我正在处理的应用程序的一部分是一个简单的基于pthread的服务器,它通过TCP/IP套接字进行通信.我在C中编写它是因为它将在内存受限的环境中运行.我的问题是:如果其中一个线程遇到返回NULL的malloc(),程序应该怎么做?到目前为止我想出的可能性:

  1. 没有特别处理.让malloc()返回NULL并让它被解除引用,以便整个事件发生段错误.
  2. 通过调用abort()或exit(-1)立即退出失败的malloc().假设环境将清理一切.
  3. 跳出主事件循环并尝试pthread_join()所有线程,然后关闭.

第一种选择显然是最简单的,但似乎非常错误.第二个也似乎错了,因为我不确切知道会发生什么.第三个选项,似乎除了两个问题诱人的:首先,所有的线程不需要在正常情况下和第二连接回主线程,以完成该线程执行,其余大部分线程必须调用malloc( )无论如何.

我该怎么办?

c malloc pthreads

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

当密钥是非平凡的对象时,如何将Python字典转储到JSON?

import datetime, json
x = {'alpha': {datetime.date.today(): 'abcde'}}
print json.dumps(x)
Run Code Online (Sandbox Code Playgroud)

上面的代码失败,TypeError因为JSON对象的键需要是字符串.该json.dumps函数有一个名为default的参数,当JSON对象的引发a 时调用该参数TypeError,但似乎无法为该执行此操作.解决这个问题最优雅的方法是什么?

python json

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

JavaScript对象文字语法错误

以下代码在Chrome和Firefox中产生语法错误,但不会产生Node.js:

{"hello": 1}
Run Code Online (Sandbox Code Playgroud)

但是,以下代码无处不在:

var x = {"hello": 1}
Run Code Online (Sandbox Code Playgroud)

此外,以下工作无处不在:

{hello: 1}
Run Code Online (Sandbox Code Playgroud)

这种奇怪的行为有什么解释?

javascript

9
推荐指数
2
解决办法
686
查看次数

Node.js在通过HTTPS提供服务时会切断文件

我试图用Node.js提供一些JavaScript文件,无论出于何种原因,文件在传输过程中被切断.代码:

httpsServer = http.createServer(function(req, res) {
    var path = url.parse(req.url).pathname;

    if (path[path.length - 1] == '/') {
            path += 'index.html';
    }

    fs.readFile(root + path, function(err, data){
            if (err) return send404(res);

            res.writeHead(200, {
                'Content-Type': getMimeType(getExtension(path)),
                'Content-Length': data.length});
            res.end(data);

    });
}),

var privateKey = fs.readFileSync(settings.PRIVATE_KEY).toString();
var certificate = fs.readFileSync(settings.CERTIFICATE).toString();

var credentials = crypto.createCredentials({key: privateKey, cert: certificate});
httpsServer.setSecure(credentials);
httpsServer.listen(settings.HTTPS_PORT);
Run Code Online (Sandbox Code Playgroud)

文件http://github.com/LearnBoost/Socket.IO/raw/master/socket.io.jshttp://code.jquery.com/jquery-1.4.2.min.js.第一个是正确的32KB,第二个正好是16KB.这不会通过HTTP发生,只会通过HTTPS发生,而且只能通过网络发生(例如:不是来自localhost).

任何帮助将非常感激.

node.js

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

关于MySQL的Django:如何启用自动提交?

我有类似下面的代码在后台进程中运行:

def run()
    while True:
        objs = MyModel.objects.filter(last_updated < time.time() - FREQUENCY)
        print objs

def update()
    while True:
       # some processing code
       mymodel.last_updated = time.time()
       mymodel.save()
Run Code Online (Sandbox Code Playgroud)

上述函数在两个独立的线程中运行:update()依次更新所有模型,而run()选择需要更新的模型.这一切都针对MySQL运行,而MyModel则存在于InnoDB表中.

问题是run()总是看到last_updated的相同值.原因是它位于事务内部并选择数据的一致快照.当然,我希望它选择最新的数据.如果我执行以下操作,它可以工作:

def run()
    from django.db import connection
    while True:
        connection.connection.execute('SET autocommit = 1')
        objs = MyModel.objects.filter(last_updated < time.time() - FREQUENCY)
        print objs
Run Code Online (Sandbox Code Playgroud)

但这意味着我将每次执行一次额外的查询.最重要的是,如果连接在我设置autocommit = 1和下面的select之间关闭,它将无法工作.

Postgres很乐意支持这个:http://docs.djangoproject.com/en/dev/ref/databases/#autocommit-mode(至少根据文档),但是有没有办法为MySQL启用自动提交?

此外,由于它作为后台进程运行,因此不会处理任何请求,也不会涉及中间件.

mysql django transactions django-models

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

在Dojo中是否有相当于jQuery的add()函数?

使用jQuery我可以这样做:

var x = $('#hello');
x = x.add('#bye');
Run Code Online (Sandbox Code Playgroud)

这样我在名为x的查询集中同时包含#hello和#bye元素.Dojo中是否有类似的功能?

jquery dojo

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