小编Dav*_*ner的帖子

`std::sync::mpsc::Sender<i32> 未实现特征 `std::marker::Sync`

我正在尝试使用 MPSC 构建多线程应用程序,但遇到了标题中的错误。我不确定这个用例的正确模式是什么 - 我正在寻找一种模式,它允许我克隆生产者通道并将其移动到要使用的新线程中。

这个新线程将保持一个打开的 websocket,并在收到 websocket 消息时通过生产者发送 websocket 消息数据的子集。消费者线程中将需要来自其他线程的数据,这就是为什么我认为 MPSC 模式是一个合适的选择。

除了标题中的消息之外,它还显示以下内容:

`std::sync::mpsc::Sender<i32>` cannot be shared between threads safely
help: the trait `std::marker::Sync` is not implemented for `std::sync::mpsc::Sender`
Run Code Online (Sandbox Code Playgroud)

我可以/应该Send为此实施吗?Rc这是使用or的合适时机吗Pin?我相信这种情况正在发生,因为我试图发送一个未在闭包Send中实现的类型,但我不知道如何利用它或在这种情况下要达到什么目的。.awaitasync

我已经能够将我的问题简化为:

use futures::stream::{self, StreamExt};
use std::sync::mpsc::{channel, Receiver, Sender};

#[tokio::main]
async fn main() {
    let (tx, rx): (Sender<i32>, Receiver<i32>) = channel();

    tokio::spawn(async move {
        let a = [1, 2, 3];
        let mut s = stream::iter(a.iter())
            .cycle()
            .for_each(move |int| async { …
Run Code Online (Sandbox Code Playgroud)

concurrency rust async-await rust-tokio

7
推荐指数
1
解决办法
3190
查看次数

在 Heroku CI 上运行 Capybara 测试时,net::ERR_NAME_NOT_RESOLVED

我在ActionDispatch::SystemTestCase本地运行良好,但在 Heroku CI 中失败并出现以下错误:

Selenium::WebDriver::Error::UnknownError: unknown error: net::ERR_NAME_NOT_RESOLVED
  (Session info: headless chrome=85.0.4183.83)
    test/system/my_failing_test.rb:29
Run Code Online (Sandbox Code Playgroud)

值得注意的是,第 29 行是 Capybaravisit命令,因此出现了与 DNS 相关的错误消息。

更重要的是,我遵循 Heroku 文档在无头 Chrome 上设置 Selenium。我相信该配置的重要部分在这里: https://devcenter.heroku.com/articles/heroku-ci-browser-and-user-acceptance-testing-uat#testing-with-selenium

总结一下我的配置:我的测试环境有以下构建包app.json

heroku/ruby
heroku/google-chrome
heroku/chromedriver

...并且我逐字添加了 Heroku 建议的“特殊配置”(上述链接中的#3) https://github.com/heroku/heroku-buildpack-google-chrome#selenium

使用构建包时是否缺少某些服务器配置?处理 buildpack 缺少的测试服务器 Web 调用的
功能是什么?rails test

我已经为此奋斗了一段时间,所以非常感谢任何建议!

continuous-integration selenium ruby-on-rails heroku selenium-chromedriver

5
推荐指数
0
解决办法
1627
查看次数