我是一名初级开发人员,正在开发在前端使用 React 的 Ruby on Rails 应用程序。最近我开始收到这个错误,不知道是什么原因造成的。谁看过这个吗?
enter image description here
如果图像没有显示这是终端返回的内容:
2020-08-14T16:14:36.743Z 37931 TID-oxmbyiczg INFO: See LICENSE and the LGPL-3.0 for licensing details.
2020-08-14T16:14:36.743Z 37931 TID-oxmbyiczg INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2020-08-14T16:14:36.743Z 37931 TID-oxmbyiczg INFO: Booting Sidekiq 5.0.5 with redis options {:id=>"Sidekiq-server-PID-37931", :url=>nil}
2020-08-14T16:14:36.748Z 37931 TID-oxmbyiczg INFO: Starting processing, hit Ctrl-C to stop
2020-08-14T16:14:36.757Z 37931 TID-oxmddbzao ERROR: heartbeat: "\xE2" from ASCII-8BIT to UTF-8
2020-08-14T16:14:41.773Z 37931 TID-oxmddbzao ERROR: heartbeat: "\xE2" from ASCII-8BIT to UTF-8
2020-08-14T16:14:46.776Z 37931 TID-oxmddbzao ERROR: heartbeat: "\xE2" from ASCII-8BIT to UTF-8
2020-08-14T16:14:51.783Z 37931 TID-oxmddbzao ERROR: heartbeat: "\xE2" from ASCII-8BIT to UTF-8```
最佳答案
一点背景:processSets 迭代工作人员,然后他们每五秒向 redis 发送一次心跳,以检查正常运行时间和与 redis 实例的连接。
首先我会检查 Encoding::default_external
在服务器和客户端机器上并确保 Encoding::UTF_8
为两者设置。其次确保config.encoding = "utf-8"
设置在 application.rb
worker 正在运行的地方。
但以上都是非常笼统的,并没有解释你所看到的错误,它来自这个块:
def ❤(key, data)
begin
# logic
rescue => e
# ignore all redis/network issues
logger.error("heartbeat: #{e.message}")
end
end
以上是从heartbeat
调用的这是从 start_heartbeat
调用的在 run
中调用.用于心跳的 key 来自identity
util.rb
中的方法(在 Sidekiq 存储库中)来自 hostname
这是一个调用 Socket.gethostname
的方法它在获取服务器的主机名时执行它所说的操作,它以平台特定的编码返回主机名。因此,如果我们不得不走到这一步,找到运行 worker 的机器的服务器名称并启动控制台并检查
Socket.gethostname
的编码值。这应该解释错误。
关于ruby-on-rails - Sidekiq worker 每两秒显示 'ERROR: heartbeat: "\xE 2"from ASCII-8BIT to UTF-8',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63417005/