1. 程式人生 > 實用技巧 >用python執行rails專案sidekiq任務

用python執行rails專案sidekiq任務

我們先看一下如何ruby如何推一個任務到sidekiq

https://github.com/mperham/sidekiq/wiki/FAQ#how-do-i-push-a-job-to-sidekiq-without-ruby

require 'securerandom'
require 'json' redis = Redis.new(:url => 'redis://hostname:port/db')
msg = { "class" => 'MyWorker',
"queue" => 'default',
"args" => [1, 2, 3],
'retry' => true,
'jid' => SecureRandom.hex(12),
'created_at' => Time.now.to_f,
'enqueued_at' => Time.now.to_f }
redis.lpush("queue:default", JSON.dump(msg))

本質上是在redis的一個佇列key 'queue:default'裡面塞msg。然後sidekiq再在'queue:default'取出來執行。

python如何呼叫ruby專案的sidekiq

import redis
import json from random import choice
from datetime import datetime sidekiq_queues = redis.Redis(host=host, port=port, db=db, password=password) queue = 'my_queue'
job = 'MyJob'
arguments = 123456789 value = {
"class": job,
"queue": queue,
"args": [arguments],
"retry": 'true',
"jid": ''.join([choice('qwertyuiopasdfghjklzxcvbnm1234567890') for i in range(24)]),
"created_at": datetime.now().timestamp(),
"enqueued_at": datetime.now().timestamp()} sidekiq_queues.sadd("queues", queue)
sidekiq_queues.lpush("queue:{queue}" , json.dumps(value))