如何将Faktory与ruby作业和python工作者一起使用?

2024-09-30 04:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用ruby脚本将作业提交到faktory服务器(https://github.com/contribsys/faktory/wiki),以启动python工作程序。 Faktory应该是语言不可知论的完美选择,但是文档只涉及ruby(job和worker)或python(job和worker)的情况。很快,我有两个问题:

  • 如何在python端注册worker,以便它可以从ruby端寻址
  • 如何正确地编码ruby作业(特别是,是否需要perform方法)

下面是一个最小的(非)工作示例。 首先,python工作文件:

from faktory import Worker 
import logging
logging.basicConfig(level=logging.INFO)

def python_worker(var_int):
    print(var_int)

w = Worker(queues=['default'], concurrency=1)
w.register('PythonWorker', python_worker)
w.run()

现在是ruby文件:

class RubyJob < ApplicationJob
    include Faktory::Job
    faktory_options retry: 5
    queue_as :default

  end

要调用作业,我使用RubyJob.perform_later(1)

回到两个问题:

  • ruby作业是否需要“perform()”方法
  • 我如何告诉ruby工作需要faktory这个“PythonWorker”

目前,我需要将python工作程序注册为'ActiveJob::QueueAdapters::FaktoryAdapter::JobWrapper'

可能有用的是一个ruby作业和python工作者的最小示例,类似于ruby(https://github.com/contribsys/faktory/wiki/Getting-Started-Ruby)或python(https://www.mikeperham.com/2019/01/08/using-faktory-with-python/)的示例


Tags: https程序githubcom示例logging作业wiki
1条回答
网友
1楼 · 发布于 2024-09-30 04:34:25

您的Ruby代码根本不需要任何作业。工作是Python。Ruby代码只需要创建作业记录并将其发送到Faktory,这样python工作人员就可以获取它。在Ruby中,使用普通的Faktory::Client API创建基本作业:

c = Faktory::Client.new
c.push('jobtype' => 'PythonWorker', 'args' => [1], 'queue' => 'default')

启动Faktory,启动Faktory\u worker\u python进程,并在Ruby应用程序中运行该代码

相关问题 更多 >

    热门问题