Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 芹菜(Django)和#x2B;RabbitMQ+;nodejs服务器交换数据_Node.js_Django_Rabbitmq_Celery - Fatal编程技术网

Node.js 芹菜(Django)和#x2B;RabbitMQ+;nodejs服务器交换数据

Node.js 芹菜(Django)和#x2B;RabbitMQ+;nodejs服务器交换数据,node.js,django,rabbitmq,celery,Node.js,Django,Rabbitmq,Celery,我有一个Django项目,使用芹菜和RabbitMQ经纪人。现在我想从NodeJSserver调用django(芹菜)任务 在我的NodeJS中,我正在使用amqplib。这是允许我将任务发送到RabbitMQ: amqp.connect('amqp://localhost', function(err, conn) { conn.createChannel(function(err, ch) { var q = 'celery'; ch.assertQueue(q, {d

我有一个
Django
项目,使用
芹菜
RabbitMQ
经纪人。现在我想从
NodeJS
server调用django(芹菜)任务

在我的
NodeJS
中,我正在使用
amqplib
。这是允许我将任务发送到
RabbitMQ

amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, ch) {
    var q = 'celery';

    ch.assertQueue(q, {durable: true});
    ch.sendToQueue(q, new Buffer('What should I write here?'));
  });
});
我的问题是芹菜用什么格式?我应该向缓冲区写入什么来调用芹菜工人

例如,在我的
芹菜路径
(django设置)中,我有
blabla.tasks.add

CELERY_ROUTES = {
   ...
   'blabla.tasks.add': 'high-priority',
}
如何调用此
blabla.tasks.add
函数

我尝试了很多方法,但芹菜工人给了我错误:
收到并删除了未知消息。目的地错了

我在这里找到了解决方案

示例消息格式为:

{
“id”:“4cc7438e-afd4-4f8f-a2f3-f46567e7ca77”,
“任务”:“芹菜。任务。任务”,
“args”:[],
“kwargs”:{},
“重试次数”:0,
“预计到达时间”:“2009-11-17T12:30:56.527191”
}

所以代码应该是:

amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, ch) {
    var q = 'celery';

    ch.assertQueue(q, {durable: true});
    ch.sendToQueue(q, new Buffer('{"id": "this-is-soo-unique-id", "task": "blabla.tasks.add", "args": [1, 2], "kwargs": {}, "retries": 0}'), {
      contentType: 'application/json',
      contentEncoding: 'utf-8',
    });
  });
});