我有以下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) 我们有一个基于rabbitMQ和的分布式架构Celery.我们可以并行启动多个任务而不会出现任何问题.可扩展性很好.
现在我们需要远程控制任务:PAUSE,RESUME,CANCEL.我们发现的唯一解决方案是在Celery任务中对DB请求后回复命令的另一个任务进行RPC调用.Celery任务和RPC任务不在同一台机器上,只有RPC任务可以访问数据库.
您是否有任何建议如何改进它并轻松地与正在进行的任务沟通?谢谢
编辑:
事实上,我们想做的事情如下图所示.这很容易进行Blue配置或者Orange,但是我们不知道如何同时进行这两种配置.
工人正在订阅一个共同点Jobs queue,每个工人都有自己Admin queue在交易所申报的.
编辑:
如果这是不可能的Celery,我愿意接受其他框架的解决方案python-rq.
我刚刚做了最新的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.
我想创建一个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) 我想为具有非常旧的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) 我想传递一个参数,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)
我的误会在哪里?
谢谢
我们正在创建一个能够跨多个地理站点分发任务的网站.该网站应该能够:
只要不符合相同的地理标准,我们就可以开展并行工作.
我们可以删除作业,只要它不处于处理状态.
我们目前的堆栈是:Angulajs - nodejs - mongodb.
我们的第一个想法是建立从远程工作者到mongodb任务的HTTP池.关键是我们将有超过20名远程工作人员,我们希望高频刷新(<1s).我们认为这个解决方案易于实现,但很难维护并使DB过载.此解决方案高度依赖于网络ping.
经过网上的一些研究,我们找到了关于rabbitMQ和消息系统的文档.这似乎符合我们的大部分要求,但我不知道如何删除处于暂挂状态的队列中的特定作业以及我们如何轻松处理任务状态的更新.
我们还找到了关于redis的文档,这是一个RAM中的KV系统.这解决了能够删除队列中的特定任务并减少mongodb负载的问题,但我们没有看到我们如何能够注意到工作中的远程工作人员要做的事情.如果是HTTP池,我们就失去了所有的好处.
我们的情况似乎是一个常见的问题,我想知道最好的解决方案是什么?
我想用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) 我有一个基于类的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:参考中的管理页面是一行的编辑页面: …