小编Leo*_*opd的帖子

在大型django表上进行高效的数据迁移

我需要在一个大的(5米行)django表中添加一个新列.我有一个南方schemamigration创建了新专栏.现在我正在编写一个datamigration脚本来填充新列.看起来像这样.(如果您不熟悉南迁移,只需忽略orm.模型名称的前缀.)

print "Migrating %s articles." % orm.Article.objects.count()
cnt = 0
for article in orm.Article.objects.iterator():            
    if cnt % 500 == 0:
        print "    %s done so far" % cnt
    # article.newfield = calculate_newfield(article)
    article.save()
    cnt += 1
Run Code Online (Sandbox Code Playgroud)

我从切换objects.all,以objects.iterator减少内存的需要.但是当我运行这个脚本时,某些东西仍在咀嚼着巨大的内存.即使上面注释了实际有用的行,脚本仍然会增长到使用10 GB以上的ram,然后才能在表格中走得很远而且我放弃了它.

好像在内存中持有某些东西.我该如何运行它,这不是记忆猪?

FWIW,我使用的是python 2.6,django 1.2.1,南0.7.2,mysql 5.1.

python django performance django-models django-south

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

PhoneGap Android插件可以提供更高质量的录音?

PhoneGap媒体API提供了一种以跨平台方式录制音频的机制,适用于Android,但音频质量非常糟糕 - 8 kHz采样率,也许还有一些高损耗的编解码器.我从这个问题中了解到,使用java代码可以获得更高质量的录音.

有人知道Android的PhoneGap插件可以提供更高质量的录音吗?

audio plugins android audio-recording cordova

7
推荐指数
2
解决办法
3047
查看次数

在jquery.ajax()加载的页面中运行的脚本过早地运行document.ready

我的网站jquery.load()用于在页面的大块上进行导航.我真的很感激能够只包含加载内容的特定部分,这里是id ="content"的div:

$(frame_selector).load(url +" #content", function(response, status, xhr) {...});
Run Code Online (Sandbox Code Playgroud)

但是现在我需要能够运行作为动态加载页面一部分的脚本. Jquery.load()剥离这些脚本,但jquery.ajax()没有.所以我复制了jquery.loadajax调用中的部分内容功能:

$.ajax({
  url: url,
  dataType: 'html', 
  success: function(data, textStatus, XMLHttpRequest) {
      // Only include the response within the #content id element.
      $(frame_selector).html( jQuery("<div>")
            .append(data)
            .find("#content")
      );
  }
});
Run Code Online (Sandbox Code Playgroud)

问题是从ajax调用动态加载的脚本无法可靠地运行.有时它们似乎没有任何影响,可能是因为它们运行得太早.脚本只是在jquery中进行DOM操作 - 不依赖于图像或flash或任何不应该加载的东西.为了避免陷入困境,我有这个可怕的黑客来让事情发挥作用.而不是仅使用AJAX加载的脚本:

$(document).ready( function() {...} );  // unreliable
Run Code Online (Sandbox Code Playgroud)

我在运行之前将脚本延迟200ms:

$(document).ready( window.setTimeout( function() {...}, 200 )); // HATE THIS
Run Code Online (Sandbox Code Playgroud)

有人知道如何在没有硬编码延迟的情况下可靠地完成这项工作吗?我猜这是加入新div的<script>逻辑和我的逻辑之间的竞争条件#content,但我不知道该怎么做.

jquery jquery-load

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

保持Heroku 1 dyno实例永远活着

据您所知,在没有使用5分钟后,Heroku会让您的免费dyno实例进入睡眠状态,这将使下一个请求更慢.[编辑:他们在一小时不活动后睡觉.]

有没有办法可以让实例保持活力?也许通过确保网站始终被使用?

谢谢.

ruby ruby-on-rails heroku ruby-on-rails-3

6
推荐指数
0
解决办法
5334
查看次数

在Linux上维护一个长期运行的任务

我的系统包括一个任务,它打开网络套接字,从网络接收推送的数据,处理它,然后根据消息将其写入磁盘或ping其他计算机.此任务旨在永久运行,并且该服务旨在使此任务始终运行.但有时它会崩溃.

保持这样的任务活着的最佳做法是什么?假设任务在我们重新启动之前最多可以死30秒.

一些明显的想法包括检查以确保进程仍在运行的监视程序进程.看门狗可以被触发cron.但它如何知道这个过程是否存在?写一个pidfile? touch一个心跳文件?如果机器陷入监视器运行速度超过心跳的程度,理想的解决方案就不会持续增加更多进程.

有没有标准的linux工具?我可以想象一个使用消息队列的解决方案,但我不确定这是不是一个好主意.

linux process

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

如何使用django-celery配置TASK_SERIALIZER

我正在使用django-celery,我想设置TASK_SERIALIZER为JSON而不是pickle.

我可以通过更改我的任务装饰器来逐个方法地执行此操作

@task
Run Code Online (Sandbox Code Playgroud)

@task(serializer="json")
Run Code Online (Sandbox Code Playgroud)

但我想在全球范围内做到这一点.设置

TASK_SERIALIZER="json"
Run Code Online (Sandbox Code Playgroud)

settings.py不起作用.试着跑

import celery
celery.conf.TASK_SERIALIZER="json"
Run Code Online (Sandbox Code Playgroud)

(为暗示这里)导致

AttributeError: 'module' object has no attribute 'conf'
Run Code Online (Sandbox Code Playgroud)

知道如何通过django运行芹菜时配置此设置?

python django celery django-celery

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

FactoryGirl在开发环境中创建对象

当我在开发中启动rails控制台时,我看到FactoryGirl创建了对象.显然我做错了,但是这样做的正确方法是什么?这段代码使我的测试工作......

# tests/factories/board.rb
FactoryGirl.define do

    factory :word do
        sequence(:text) { |n| "FAKETEXT#{n}" }
    end

    factory :board do
        trait :has_words do
            words [
                FactoryGirl.create(:word, id: "514b81cae14cfa78f335e250"),
                FactoryGirl.create(:word, id: "514b81cae14cfa7917e443f0"),
                FactoryGirl.create(:word, id: "514b81cae14cfa79182407a2"),
                FactoryGirl.create(:word, id: "514b81cae14cfa78f581c534")
            ]
        end
    end

end
Run Code Online (Sandbox Code Playgroud)

请注意,在我的config目录中的任何文件中都没有提到工厂的任何内容,因此gem会自动进行任何加载.我Gemfile读到的相关部分:

# Stuff not to use in production
group :development, :test do
    # Command-line debugger for development
    gem "debugger"

    # for unit testing - replace fixtures
    gem "factory_girl_rails"
end
Run Code Online (Sandbox Code Playgroud)

所以我可以把工厂女孩带出开发环境.但我认为这些记录是在工厂使用之前创建的,这表明我的工厂编写错误.但如果你告诉我工厂写得正确,我就会这样做.

ruby-on-rails mongoid factory-bot

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

在Eclipse中,是否可以通过键入文件的路径和名称来打开文件?

IDE在许多方面都很出色。但是我不喜欢它们如何使我使用GUI来完成我可以在命令行中更快地键入内容的操作。例如,打开一个已知的特定文件。如果我知道文件名,则可以从命令行输入编辑器的名称和文件名。使用制表符完成功能,我可以在可靠的时间内非常快地完成此操作。无需搜索输出或将手指从键盘上移开。

在Eclipse中,有没有一种方法可以通过简单地通过输入路径+文件名来打开已知文件?也许通过插件?

“开放资源”快捷键(ctrl-shift-R)差不多就是它,但是它只能让您键入文件名,而不是路径。如果在不同目录中有多个同名文件,则必须再次使用鼠标寻找所需内容。

eclipse eclipse-plugin

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

Backbone-relational.js + Backbone.View(s)

问题:文档很少,而且我是一个菜鸟 - 任何人都可以确认正确的(假设有一种)方法将Backbone.Views绑定到Backbone.RelationalModel的实例(来自backbone-relational.js)更新/渲染到dom?基于Backbone中正常的模型/视图绑定,我尝试了一些不同的方法,但收效甚微.

背景故事(/更多信息): 我正在学习Backbone.js的绳索,并且在过去的一周里不得不接受很多.如果我遗漏了一些明显的东西(极有可能 - 包括以下处理我问题的"正确"方式),请打电话给我.

我正在处理一个mongodb支持的REST接口(我没有完全控制 - 或者我将重新设计服务器端的行为),它充分利用了嵌套字典,所以我一直在阅读如何在Backbone中最好地表示(虽然没有打破Backbone提供的伟大的save()+服务器同步).

我见过两种选择:backbone-relationalligament.js.

我开始使用backbone-relational.js,并且为树中的各种字典创建了RelationalModel(骨干关系代替Backbone的标准模型),这些字典由REST接口传回.定义它们之间的关系,并且控制台记录每个模型的JSON(在它们各自的初始化函数中)显示它们都在整个集合级别的fetch()命令上正确地从服务器上调用/加载.

所以,这一切都很棒.

问题:我有"监听"每个模型的更新视图(以及应该在dom上渲染模板的绑定函数),并且它们根本不会"触发"(更不用说渲染......).主视图触发fetch(),没有问题,加载"顶级"模型并在dom上呈现它 - 但代表"顶级"模型中的"外键"模型的视图永远不会(尽管数据肯定会加载到每个模型中,如上面提到的每个模型的控制台登录所示.

非常感谢任何见解.

直接回复下面的Raynos回复(感谢Raynos!): 如果我为UpperLevelCollection定义了一个基本url,而UpperLevelModels存在于服务器上的(UpperLevelCollection url)/(UpperLevelModel id),那么我如何将这些LowerLevelCollections映射到字典键中服务器端的每个UpperLevelModel的一个JSON转储?换句话说,使用模型中的集合可以正确地处理来自服务器的数据转储(显然非常简化,但可以解决问题)并正确保存/更新/同步它?

[{
    "some_key": "Some string",
    "labels": ["A","List","Of","Strings"],
    "content": [{
        "id": "12345"
        "another_key": "Some string", 
        "list": ["A","list","of","strings"],
    },{
        "id": "67890"
        "another_key": "Some string", 
        "list": ["A","list","of","strings"],
    }],
}]
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js backbone-relational

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

Celery监视不使用数据库代理

我正在使用django-celery将数据库用作代理和结果存储.事件正在处理中,但监控(celerycam或celeryev)无法正常工作.

我的settings.py包括

import djcelery
djcelery.setup_loader()
BROKER_BACKEND = "django"
CELERY_IMPORTS = (
        "cbridge.tasks",
        )

INSTALLED_APPS += [
    'djcelery',
    'djkombu',
    ]
Run Code Online (Sandbox Code Playgroud)

这足以从任何地方manage.py celeryd将进程中的任务cbridge.tasks插入到队列中,有时会将结果返回到启动任务的线程.(我现在有时会把它留下来.)所以系统设置足以让任务实际运行,这很棒,但是......

我的问题是如何让我对任务进行任何监控?djcelery_桌子上没有任何东西出现过.

我跑步manage.py celerycam或者manage.py celeryev他们启动很好但从不做任何事情.我猜我还需要设置更多配置变量.但他们是什么?我试过设定

CELERY_RESULT_BACKEND = "database" 
CELERY_RESULT_DBURI = "mysql://root:@localhost/cbridge"
Run Code Online (Sandbox Code Playgroud)

但他们没有任何区别.我希望celeryevcelerycam阅读与celeryd相同的配置设置.他们为什么不呢?

python django configuration celery django-celery

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