gpt4 book ai didi

ruby - Sidekiq 现任赛璐珞 Actor

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:53 25 4
gpt4 key购买 nike

我需要在我的 Sidekiq worker 中访问当前的赛璐珞 Actor ,但我看不到这样做的方法。

每当我尝试调用:

Celluloid::Actor.current

我收到一个错误:不在 actor 范围内

我试图通过每次创建一个新 Actor 来绕过寻找当前 Actor :

Celluloid::Actor.new(SecureRandom.hex)

但出于某种原因,它给我一个错误:attempted to call dead actor

我应该做些什么不同的事情来让当前的 actor 进入 Sidekiq worker?

背景信息 我正在连接到我的工作人员中的 websocket 并向它发送消息。

Celluloid::WebSocket::Client.new('ws://my-uri', Celluloid::Actor.current)

最佳答案

我猜你应该定义一个单独的类包括Celluloid,这里有一个基于one of those from Sidekiq repo的例子

class MyWebSocketWhatever
include Celluloid

def initialize(url)
@ws_client = Celluloid::WebSocket::Client.new url, Celluloid::Actor.current
end

def send_message(msg)
@ws_client.text msg
end

def on_message(msg)
$redis.lpush 'sinkiq-example-messages', "RESPONSE: #{msg}"
end
end

class SinatraWorker
include Sidekiq::Worker

def perform(msg='lulz you forgot a msg!')
$redis.lpush 'sinkiq-example-messages', "SENT: #{msg}"
MyWebSocketWhatever.new('ws://echo.websocket.org').send_message msg
end
end

像魅力一样工作,刚刚玩完它。获取 the full updated example ,安装所需的 gem,然后启动 Sinatra 和 Sidekiq

sidekiq -r ./sinkiq.rb
ruby ./sinkiq.rb

然后浏览到 http://localhost:4567

关于ruby - Sidekiq 现任赛璐珞 Actor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16991609/

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