当前位置: 首页 > 面试题库 >

初始化具有不同值的不同Celery Workers

谭昕
2023-03-14
问题内容

我正在使用celery在Hadoop上运行长时间运行的任务。每个任务都会在Hadoop上执行Pig脚本,该脚本运行大约30分钟-2小时。

我当前的Hadoop设置有4个队列a,b,c和默认队列。当前,所有任务都由一个工人执行,该工人将作业提交到单个队列中。

我想再添加3个将作业提交到其他队列的工作程序,每个队列一个工作程序。

问题是队列当前是硬编码的,我希望为每个工作人员设置此变量。

我进行了很多搜索,但无法找到一种方法来传递每个Celery Workers不同的队列值并在任务中访问它。

我像这样开始我的Celery Workers。

celery -A app.celery worker

我希望在命令行本身中传递一些其他参数,并在我的任务中访问它,但是celery抱怨它不理解我的自定义参数。

我计划通过设置–concurrency=3参数在同一主机上运行所有工作线程。有什么解决办法吗?

当前场景是这样的。我每次尝试执行任务print_something时都说tasks.print_something.delay()只打印队列C。

@celery.task()
def print_something():
    print "C"

我需要让工人根据我在启动时传递给他们的值来打印可变字母。

@celery.task()
def print_something():
    print "<Variable Value Per Worker Here>"

问题答案:

我通常要做的是,在另一个脚本(例如manage.py)中启动工作程序(未执行任务)后,我添加带有参数的命令以启动特定任务或具有不同参数的任务。

在manager.py中:

from tasks import some_task

@click.command
def run_task(params):
    some_task.apply_async(params)

这将根据需要启动任务。



 类似资料:
  • 打印c时,c的值是初始化的值,x,y都是1。a变化了不影响c。 那么函数d在初始化时,x:b(),y:a为什么不初始化为x:1,y:1呢,就是这样

  • 我在我的程序中使用了HashMap,它工作得很好,但是我不明白HashMap的这些初始化之间的区别。 假设我正在实现一个HashMap,其中字符为键,整数为值。这两者之间有什么区别?

  • 下面的例子可以解释我的意思: <代码>自动p=标准::使\u共享 变量是默认初始化的(因此具有垃圾值)还是值初始化的(因此具有零值)?我在GCC 5.2和clang 3.6上进行了测试,前者进行值初始化,后者进行默认初始化。我想知道标准对此有什么规定?在我看来,在这种情况下,现代C肯定应该执行值初始化。

  • 问题内容: 据我所知,有四种方法可以在Swift中声明字典: 似乎这四个选项产生相同的结果。 这些有什么区别? 问题答案: 您要做的只是注意到您可以: 使用显式变量类型,或者让Swift根据分配给它的值来推断变量的类型。 使用正式的指定通用泛型符号,或使用内置的“语法糖”来描述字典类型。 二乘二就是四。 实际上,实际上您已经省略了一些可能性。例如,你 可以 说 当然,在现实生活中,您不愿做 任何

  • 我会从我想达到的目标开始 意图 该软件在for循环中解析XML数据。处理数据的 for 循环将持续到 50(因为我得到了 50 个不同的结果)。我最初所做的是,-方法解析整个XML数据并将其保存到TextViews中并显示它。但现在我想添加一个启动画面,只要数据加载就会显示。 XML文件像任何其他普通XML文件一样构建,因此当我通过for循环时,键总是相同的,但值不同。 方法 我已经做的是创建一个

  • 问题内容: 没有循环,是否有可能将所有列表值初始化为某个布尔值?例如,我要列出所有False的N个元素。 问题答案: 您可以这样做:- 注: - 请注意,你不应该有这样做的有相同的值,否则你会看到令人惊讶的行为像一个在下面的例子: - 如您所见,您在一个内部列表中所做的更改将反映在所有这些内容中。