如何将芹菜节拍与节点库一起使用



我正在使用node-celery github链接来实现芹菜芹菜与兔子的第一步。

与芹菜一样,我们定义任务,然后推动任务。

我在 tasks.py 中定义的任务如下:

import os
import logging
from celery import Celery
import requests
backend = os.getenv('CELERY_BACKEND_URL', 'amqp')
celery = Celery('tasks', backend=backend)
celery.conf.update(
    CELERY_RESULT_SERIALIZER='json',
    CELERY_ENABLE_UTC=True
)
@celery.task
def getOrders():
    requests.get('locahost:4000/getOrders')

我运行以触发任务的文件:

eta.js:

  var celery = require('../celery'),
        client = celery.createClient({
            CELERY_BROKER_URL: 'amqp://guest:guest@localhost:5672//'
     });
    
    
    
    client.on('error', function(err) {
        console.log(err);
    });
    
    client.on('connect', function() {
        client.call('tasks.getOrders', {
            eta: new Date(Date.now() + 15 * 1000) // an hour later
        });
    });

我通过使用以下命令来启动芹菜工人:

celery worker -A tasks -l info

现在,当我运行eta.js和我的任务" getOrders"在任务中定义的" getorders"时。

运行我运行的eta.js:

 node eta.js

我想要的是我的任务" getorders'在每x秒后保持运行。我已经阅读了有关在芹菜周期性任务中设置定期任务的芹菜,但它在python中,我需要在node-celery中。

如果可能的话,我想在节点陈列中使用芹菜节拍,还是应该避免使用节点芹菜?并使用芹菜python设置,我知道python,但找不到python设置芹菜的任何链接。

任何对芹菜有良好了解的人都可以帮助我或指导我遵循一些教程。

谢谢!

您可以直接将计划的任务添加到Redis,以便RedBeat将读取此新任务,并将执行并根据Crontab设置进行重新安排。

这样做:

  1. 在您的芹菜配置中添加redbead redis url
  2. 创建一个定期任务
const task = {
     name : "getOrdersTask",
     task : "tasks.getOrders",
     schedule: {
         "__type__": "crontab",
         minute : "*/5",
         hour : "*",
         day_of_week :
         day_of_month : "*/7"
         month_of_year : "[1-12]"
     },
     args : [],
     enabled : true,
}
  1. 将任务存储在redis中:

    redisClient.hset("redbeat:getOrdersTask", "definition", JSON.stringify(task));
    
  2. 将任务插入任务列表中(0是要迫使redbeat立即执行它,以便根据您选择的期间配置的适当时间在适当的时间重新安排,每5分钟每5分钟)P>

    redisClient.zadd("redbeat::schedule", 0, "getOrdersTask")
    

相关内容

  • 没有找到相关文章

最新更新