小编Jul*_*lio的帖子

猫鼬和独特的领域

我有以下mongoose模式:

var SimSchema = new Schema({
    msisdn     : { type : String , unique : true, required : true },
    imsi       : { type : String , unique : true, required : true },
    status     : { type : Boolean, default: true},
    signal     : { type : Number },
    probe_name : { type:  String , required : true }
});
Run Code Online (Sandbox Code Playgroud)

我有unique选择msisdn和imsi.

在某些情况下,这种情况得到了很好的尊重.对于以下mocha测试:

"use strict";

var app      = require('../../app');
var http     = require('http'); …
Run Code Online (Sandbox Code Playgroud)

mocha.js mongoose mongodb

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

与芹菜正在进行的任务互动

我们有一个基于rabbitMQ和的分布式架构Celery.我们可以并行启动多个任务而不会出现任何问题.可扩展性很好.

现在我们需要远程控制任务:PAUSE,RESUME,CANCEL.我们发现的唯一解决方案是在Celery任务中对DB请求后回复命令的另一个任务进行RPC调用.Celery任务和RPC任务不在同一台机器上,只有RPC任务可以访问数据库.

您是否有任何建议如何改进它并轻松地与正在进行的任务沟通?谢谢

编辑: 事实上,我们想做的事情如下图所示.这很容易进行Blue配置或者Orange,但是我们不知道如何同时进行这两种配置. 在此输入图像描述 工人正在订阅一个共同点Jobs queue,每个工人都有自己Admin queue在交易所申报的.

编辑: 如果这是不可能的Celery,我愿意接受其他框架的解决方案python-rq.

python rabbitmq celery python-rq

27
推荐指数
2
解决办法
1073
查看次数

OS X和rabbitMQ:错误:主机xxx的epmd错误:地址(无法连接到主机/端口)

我刚刚做了最新的OS X特立独行更新,我很惊讶看到rabbitMQ并不适合工作.我收到以下错误:

MacBook-Pro-de-Julio:~ julio$ rabbitmq-server
ERROR: epmd error for host MacBook-Pro-de-Julio: address (cannot connect to host/port)
Run Code Online (Sandbox Code Playgroud)

我使用的是独立版本rabbitMQ.我尝试重新安装它没有任何成功.当我运行hostname命令时,我得到以下结果:

MacBook-Pro-de-Julio:~ julio$ hostname
MacBook-Pro-de-Julio.local
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

编辑1:

通过关闭Wifi,我可以成功运行rabbitMQ.如果我打开它,我无法启动rabbitMQ.

编辑2:

感谢@old_sound的答案,我通过编辑我的问题解决了这个问题/etc/hosts.

rabbitmq osx-mavericks

22
推荐指数
2
解决办法
2万
查看次数

带有struct数组的Golang和JSON

我想创建一个GatewayInfo类型定义的JSON,如下所示:

type SpanInfo struct {
    imsi string
    network string
    network_status string
    signal_quality int
    slot int
    state string
}

type GatewayInfo []SpanInfo
Run Code Online (Sandbox Code Playgroud)

网关信息创建于:

var gatewayInfo = make(GatewayInfo, nb_spans)
Run Code Online (Sandbox Code Playgroud)

要创建JSON,我使用以下json.Marshal函数:

gatewayInfo := getGatewayInfo(spans)
log.Printf("Polling content: %s\n", gatewayInfo)

jsonInfo, _ := json.Marshal(gatewayInfo)
log.Printf("jsonInfo: %s\n", jsonInfo)
Run Code Online (Sandbox Code Playgroud)

不幸的是结果不是我所期待的:

2015/02/09 13:48:26 Polling content: [{652020105829193 20801 Registered (Roaming) %!s(int=17) %!s(int=2) } {652020105829194 20801 Registered (Roaming) %!s(int=16) %!s(int=3) } {652020105829192 20801 Registered (Roaming) %!s(int=19) %!s(int=1) } {652020105829197 20801 Registered (Roaming) %!s(int=19) %!s(int=4) }]
2015/02/09 …
Run Code Online (Sandbox Code Playgroud)

json struct go

11
推荐指数
2
解决办法
2万
查看次数

使独立卷曲导致段错误

我想为具有非常旧的libc版本的嵌入式系统构建一个独立版本的`curl而没有任何库依赖(甚至是libc).

从当前的curl github,我使用以下命令配置编译:

./configure --disable-shared --enable-static-nss --prefix=/tmp/curl LDFLAGS='-static -static-libgcc -Wl,-Bstatic -lc' LIBS='-lc -lssl -lcrypto -lz -ldl'
[...]
curl version:     7.50.2-DEV
  Host setup:       x86_64-pc-linux-gnu
  Install prefix:   /tmp/curl
  Compiler:         gcc
  SSL support:      enabled (OpenSSL)
  SSH support:      no      (--with-libssh2)
  zlib support:     enabled
  GSS-API support:  no      (--with-gssapi)
  TLS-SRP support:  enabled
  resolver:         default (--enable-ares / --enable-threaded-resolver)
  IPv6 support:     enabled
  Unix sockets support: enabled
  IDN support:      no      (--with-{libidn,winidn})
  Build libcurl:    Shared=no, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  SSPI support:     no …
Run Code Online (Sandbox Code Playgroud)

gcc curl segmentation-fault ldd

10
推荐指数
1
解决办法
582
查看次数

grunt,grunt-shell和命令参数

我想传递一个参数,grunt-shell就像它在文档中定义的那样:

module.exports = function(grunt) {

// Configure Grunt
grunt.initConfig({
    shell: {           
        hello: {
            command: function (greeting) {
                return 'echo ' + greeting;
            },
            options: {
                stdout: true
            }
        }

    }
});

grunt.loadNpmTasks('grunt-shell');
grunt.registerTask('d', 'shell:hello');
Run Code Online (Sandbox Code Playgroud)

当我在没有参数的情况下执行它时它正在工作但是当我尝试发出一个参数时我得到了一个错误:

Julio:Server julio$ grunt d
Running "shell:hello" (shell) task
undefined

Done, without errors.
Julio:Server julio$ grunt d:me
Warning: Task "me" not found. Use --force to continue.

Aborted due to warnings.
Run Code Online (Sandbox Code Playgroud)

我的误会在哪里?

谢谢

arguments gruntjs

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

分布式工作者的架构

我们正在创建一个能够跨多个地理站点分发任务的网站.该网站应该能够:

  • 创建一个任务,
  • 把它放在队列中,
  • 根据地理标准将其分配给工人,
  • 根据工作状态更新Web界面(步骤1,2 3等),
  • 将最终结果保存在mongodb中并注意Web界面.

只要不符合相同的地理标准,我们就可以开展并行工作.

我们可以删除作业,只要它不处于处理状态.

我们目前的堆栈是:Angulajs - nodejs - mongodb.

我们的第一个想法是建立从远程工作者到mongodb任务的HTTP池.关键是我们将有超过20名远程工作人员,我们希望高频刷新(<1s).我们认为这个解决方案易于实现,但很难维护并使DB过载.此解决方案高度依赖于网络ping.

经过网上的一些研究,我们找到了关于rabbitMQ和消息系统的文档.这似乎符合我们的大部分要求,但我不知道如何删除处于暂挂状态的队列中的特定作业以及我们如何轻松处理任务状态的更新.

我们还找到了关于redis的文档,这是一个RAM中的KV系统.这解决了能够删除队列中的特定任务并减少mongodb负载的问题,但我们没有看到我们如何能够注意到工作中的远程工作人员要做的事情.如果是HTTP池,我们就失去了所有的好处.

我们的情况似乎是一个常见的问题,我想知道最好的解决方案是什么?

rabbitmq redis node.js

7
推荐指数
3
解决办法
5018
查看次数

Promise和nodejs MongoDB驱动程序

我想用MongoDB驱动程序做出承诺.我写了以下代码:

var TaskBroker = function () {
  this.queueName = 'task_queue';
  this.rabbit = {};
  this.mongo = {};
};

TaskBroker.prototype.connectRabbit = function() {
  var self = this;

  return amqp.connect('amqp://localhost')
    .then(function(connection) {
      self.rabbit.connection = connection;
      return connection.createChannel()
    })
    .then(function(channel) {
      self.rabbit.channel = channel;
      return channel.assertQueue(self.queueName, {durable: true});
    })
};

TaskBroker.prototype.connectMongo = function() {
  console.log('Connect Mongo');
  var self = this;
  var defer = q.defer();
  MongoClient.connect('mongodb://127.0.0.1:27017/test', {}, defer.makeNodeResolver());
  return  defer.promise.then(function(db) {
    self.mongo.db = db;
    console.log('hello');
    return 42;
  });
};

TaskBroker.prototype.connect = function () {
  var …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js promise

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

在管理界面中显示django_extensions的创建/修改字段

我有一个基于类的TimeStampedModel来自django-extentions:

from model_utils.models import TimeStampedModel


class MyClass(TimeStampedModel):
    pass
Run Code Online (Sandbox Code Playgroud)

默认情况下,在管理界面中,created和modified字段不会显示在版本页面中my_app/myclass/id.

我尝试了这个hack来强制显示编辑管理页面中的created和modified字段MyClass:

from django.contrib import admin

from my_app.models import MyClass


class MyClassAdmin(admin.ModelAdmin):
    fields = MyClass._meta.get_all_field_names()

admin.site.register(MyClass, MyClassAdmin)
Run Code Online (Sandbox Code Playgroud)

但这引发了以下异常:

Exception Type:     FieldError
Exception Value:    Unknown field(s) (modified, created) specified for MyClass. Check fields/fieldsets/exclude attributes of class MyClassAdmin.
Run Code Online (Sandbox Code Playgroud)

任何想法如何在版本管理界面中显示created和modified字段MyClass?

注1: MyClass是包含许多字段的模型,包括ManyToMany字段.我可以显示除基类之外的所有字段created和modified字段TimeStampedModel.

注2:参考中的管理页面是一行的编辑页面: …

django django-admin django-extensions

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