gpt4 book ai didi

python - 如何将 Faktory 与 ruby​​ 工作和 python worker 一起使用?

转载 作者:行者123 更新时间:2023-12-04 10:10:04 24 4
gpt4 key购买 nike

我想使用 ruby​​ 脚本将作业提交到 faktory 服务器( https://github.com/contribsys/faktory/wiki )以启动 python 工作程序。
Faktory 应该非常适合与语言无关的情况,但文档仅涵盖 ruby​​(工作和 worker )或仅 Python(工作和 worker )案例。很快,我有两个问题:

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

  • 这是一个最小(非)工作示例。
    首先,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​​ 工作从工厂要求“PythonWorker”?

  • 目前我需要将 python worker 注册为“ActiveJob::QueueAdapters::FaktoryAdapter::JobWrapper”。

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

    最佳答案

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

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

    启动 Faktory,启动 faktory_worker_python 进程并在您的 Ruby 应用程序中运行该代码。

    关于python - 如何将 Faktory 与 ruby​​ 工作和 python worker 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61374657/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com