Я хочу использовать сценарий ruby для отправки заданий на сервер фактора (https://github.com/contribsys/faktory/wiki) для запуска python работника. Faktory должен быть идеальным для этого языка c, но документация охватывает только случаи ruby (работа и работник) или python только (работа и работник). У меня два вопроса:
- Как зарегистрировать работника на стороне python, чтобы его можно было адресовать со стороны 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 метод 'execute ()'?
- Как указать, что задание ruby требуется от фактора 'PythonWorker'?
На данный момент мне нужно зарегистрировать работника python как 'ActiveJob :: QueueAdapters :: FaktoryAdapter :: JobWrapper'.
Может быть полезным будет минимальный пример задания ruby и работника python, аналогичный примерам для ruby (https://github.com/contribsys/faktory/wiki/Getting-Started-Ruby) или python (* Только 1034 *https://www.mikeperham.com/2019/01/08/using-faktory-with-python/).