如果失败,请重试 SFTP?

2023-12-06

我正在使用 SSH.NET 上传。但如果进程失败,我想重试 sftp 文件。我有这段代码,但我认为这不是处理重试的最佳方法。处理这个问题的最佳方法是什么?

var exceptions = new List<Exception>();
int retryCount = 3;

for (int retry = 0; retry < retryCount; retry++)
{
    try
    {
        var filePath = Path.Combine(path, fileName);

        var client = new SftpClient("ftp.site.com", 22, "userName", "password");

        client.Connect();

        if (client.IsConnected)
        {
            var fileStream = new FileStream(filePath, FileMode.Open);
            if (fileStream != null)
            {
                client.UploadFile(fileStream, "/fileshare/" + fileName, null);

                client.Disconnect();
                client.Dispose();
            }

        }
    }
    catch (Exception ex)
    {
        exceptions.Add(ex);
        System.Threading.Thread.Sleep(10000);
    }

    if (exceptions.Count == 3)
    {
        throw exceptions[0];
    }
}

推荐的重试方法是瞬态故障处理库Polly.

var retryPolicy = Policy
  .Handle<Exception>()
  .WaitAndRetry(3, retryAttempt => 
    TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)) 
  );

retryPolicy.Execute(() => {
    using (var client = new SftpClient("ftp.site.com", 22, "userName", "password")) 
    {
        /* file uploading .. */
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果失败,请重试 SFTP? 的相关文章

  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 什么可以解释托管堆上超过 5,000,000 个 System.WeakReference 实例?

    我一直在针对生产 ASP NET Web 应用程序运行负载测试 并且看到在堆上创建了大量 System WeakReference 在大约 15 分钟内 负载管理堆内存已飙升至大约 3GB 并且我有大约 5 000 000 个对 Syste
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • Twitter 登录失败

    当我在我的android应用程序中使用twitter登录时 我遇到了一些问题 错误日志如下 09 05 15 38 48 492 22119 22119 sg com conversant swiftlive E Twitter Faile
  • 获取压缩文件的 mime 类型

    获取上传文件的 mime 类型非常简单 echo mime content type fileatt tmp name 但是 我还想检查压缩文件中包含的文件的 mime 类型 解压我的文件后 循环遍历 zip 中的文件以及位置 i是当前文件
  • 哪种方法性能更好:.Any() 与 .Count() > 0?

    in the System Linq命名空间 我们现在可以扩展我们的IE可枚举拥有Any and Count 扩展方法 最近有人告诉我 如果我想检查一个集合中是否包含 1 个或多个项目 我应该使用 Any 扩展方法而不是 Count gt
  • 如何在 JEST 测试用例中检查全局获取的响应

    因此 我使用 jest 来测试我的节点函数 该函数调用 fetch APi 来获取数据 现在当我为其编写测试用例时 我收到如下错误 expect received resolves toEqual Matcher error receive
  • 安装 Crashlytics 时出错 - SSL 对等握手失败 [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 在尝试安装 Crashlytics 时 我收到此错误 安装 Crashlytics 3 7 2 usr bin curl f L o gt var folders 7x kp
  • std::sort 具有相等的元素会导致分段错误

    我有一个存储指针的容器 我试图根据指针指向的相应对象中的数据成员以非递增顺序对这些指针进行排序 就我而言 许 多对象可能具有相同的该数据成员值 下面是一段简短的代码来说明问题 对排序函数的调用给出了分段错误 奇怪的是 如果容器中有 16 个
  • WPF 组合框的 IsEditable 属性

    我在很多地方都读到 WPF 组合不支持自动完成 但我使用 IsEditable 属性并发现自动完成功能在 WPF 4 中工作 这是新添加的吗 不 不是 是否可编辑自 NET Framework 3 0 以来就已存在 自动完成通常意味着显示选
  • 如何在需要两个参数的函数的向量上使用 std::ranges ?

    我一直在尝试了解新的范围库 并尝试将一些更传统的 for 循环转换为函数代码 给出的示例代码参考参数非常简单易读 但是 我不确定如何将范围应用于点向量 该点向量需要查看 计算并比较每个 x 和 y 值 并在最后比较最大距离 struct P
  • Symfony 5(包括 4)使用 Gedmo Doctrine Extension for SoftDelete

    我尝试对 Symfony 5 中的某些实体使用软删除 使用 gedmo doctrine extensions 但遇到了一些麻烦 侦听器 SoftDeleteableListener 未添加到 EventManager 编译错误 App E
  • JDBCPreparedStatements 中的高级参数化[重复]

    这个问题在这里已经有答案了 有没有办法在PreparedStatement 中对表进行参数化 select from where id 如果不是 那么最好的方法是什么 或者是否有其他方法可以在不失去PreparedStatement优点的情
  • 导入 Microsoft Access 数据库时保留自动编号列的值

    我尝试以编程方式将多个表从 Microsoft SQL Server 导入到 Microsoft Access 每个 SQL Server 表都有一个标识列 相应的 Access 表也有一个自动编号列 现在我想生成 SQL 脚本以将数据从
  • 在 CKEditor 中使用内联编辑将数据保存到 PHP / Mysql

    我想使用新的 CKEditor 4 的 内联编辑 http docs ckeditor com guide dev inline section 2 但找不到任何如何使用 PHP MySQL 保存数据的示例 你能帮助我吗 您需要一些 AJA
  • 将 foreach 拆分为页面

    files glob docs xml foreach files as file xml new SimpleXMLElement file 0 true echo tr td xml gt doctype td td a href ba
  • 使用一行代码合并两个具有不同索引的数据帧,同时保留主数据帧的索引

    我有两个数据框 第一个 df1 是 df1 pd DataFrame col1 0 1 col2 0 1 df1 df1 rename index k v for k v in zip 0 1 zero one print df1 col1
  • 订阅事件时执行函数

    当有人订阅我在课堂上制作的事件时 是否可以执行一些代码 简短的说明 我需要配置一台外部电脑 以便在有人订阅此事件时向我发送数据 这样当收到该数据时 我可以抛出该事件 public class test public event EventH
  • Cos(90) 返回一个非常接近 0 的值,但我需要 0?

    temp x btm left 0 temp y btm left 1 的值 angle 90 Moving the bottom left coordinates btm left real temp x btm left cos ang
  • 需要工具提示:将Google Sheet现有数据更改为DataTable

    Problem 我看到的所有文档都使用 DataTable 将数据写入脚本本身 我需要从现有行调用此工具提示数据 我需要了解 HTML 页面和 google 工作表中嵌入图表之间的代码差异 Goal 我有一个需要自定义工具提示的散点图 我需
  • 使用预签名 URL 通过 cURL 将文件加载到 S3

    我获得了一个预签名 URL 用于在 S3 存储桶上上传文件 这是卷曲命令 curl v T dansero jpg https ss files dev s3 ap southeast 2 amazonaws com dansero jpg
  • 如何在Robot Framework中实现java库

    如何在 Eclipse 中创建库 然后将其导入 Robot FrameWork 中 我现在进行了很多搜索 但没有任何指南可以帮助我 您需要执行以下操作 创建您的 java 库 运行机器人框架jython版本时将其添加到类路径中 创建您的 j
  • 如果失败,请重试 SFTP?

    我正在使用 SSH NET 上传 但如果进程失败 我想重试 sftp 文件 我有这段代码 但我认为这不是处理重试的最佳方法 处理这个问题的最佳方法是什么 var exceptions new List