问题标签 [fire-and-forget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4722 浏览

c# - 触发并忘记异步任务方法有时不会调用

我有一个异步方法:

在大多数情况下,我通过以下方式调用此方法:

此调用按预期工作。但是在某个地方,我需要将此方法称为火灾并忘记:

在这种情况下,有时任务DoSomethingAsync()运行并完成,但有时任务从未被调用(或调用一些await内部DoSomethingAsync()但从未完成最后一个await SaveAsync();)。

我正在尝试确保通过这些代码以火灾和忘记的方式调用该任务:

但是,这并不像预期的那样工作。所以我的问题是:

  1. 如何调用DoSomethingAsync()withoutawait将始终运行并完成?(我不在乎 AppDomain 重启/崩溃的情况)

  2. 如果我删除其中的所有async/await代码并DoSomethingAsync()替换await为认为如果任务将在 10 分钟后被调用,我会很高兴)?.ContinueWith()Task DoSomethingAsync()async

0 投票
1 回答
766 浏览

java - Play Framework 2 Java - 一劳永逸

我有一个注册,成功注册后,我会向用户发送一封电子邮件,欢迎他们使用该软件。目前电子邮件不是异步发送的,这会导致应用程序等到电子邮件发送完毕后才返回响应让我知道它是成功的。这并不理想,因为 1) 它并不真正符合可扩展性的 Play 精神,以及 2) 如果我有多个用户同时注册,它会非常非常慢。

我有一个包含所有电子邮件方法的类(MailHelper.class),它们都是静态方法。我从用户注册的另一个类(User.class)中调用它们。

如何使用 Akka 即发即忘发送电子邮件的呼叫?我需要在 User 类中执行此操作还是需要在 MailHelper 类中执行此操作?

下面是我用来调用发送电子邮件的方法的代码,下面是我用来实际发送电子邮件的代码

调用发送电子邮件方法:

发送电子邮件:

任何帮助都会很棒,因为我以前从未使用过 Akka,到目前为止只在互联网上找到了 Scala 示例。

0 投票
2 回答
2259 浏览

c# - 通过设置 Tmeout 使用 WebClient 触发并忘记

我有一个关于 WebClient 的问题,我希望有人可以帮助我。我知道这个问题被问了几次,但我找不到一个好的答案。

我有两种不同的场景需要调用 URL。a) 我不需要来自 URL (Fire&Forget) 的任何回复。b) URL 返回一个 JSON,所以我需要等待在服务器上完成处理才能获取我的数据。

我对 a) 有一些问题,我不知道我所做的是否有意义。为了实现 Fire&Forget,我将 WebClient 超时设置为“小”数,500 毫秒(代码如下)。我的问题是:

a)这是一个好方法还是没有任何意义?b) 等待 500 毫秒是否有意义?我可以将超时设置为零吗?c) 这种方法安全吗?我不在乎完成处理需要多长时间,但我想确保我能够启动 Web 服务。下面的代码是否保证 Web 服务将被触发,如果没有,我会得到一个不是 Timneout 的异常?

非常感谢 !

0 投票
1 回答
1654 浏览

javascript - 如何在不等待回复的情况下发布表单

您如何发布表单(在 javascript 中)并使浏览器不等待响应?这可能吗?我想要创建的模式是一种“一劳永逸”的模式。这是执行提交的代码:

(表单发布是这样完成的,因为我必须发布到域外的端点,因此必须克服 CORS 问题。)

0 投票
3 回答
701 浏览

asp.net-mvc - 这是 MVC Fire and Forget 方法的糟糕设计吗?

我有一个执行任务的控制器操作,最后,它会向用户发送一封确认电子邮件。它的电子邮件部分不是很重要,所以如果电子邮件的发送抛出异常,我不想让我的动作中断,我不希望我的 HTTP 响应等待电子邮件发送。我希望这是一场火灾,然后忘记事情。

简而言之,这就是我的处理方式:


这种方法合适吗?

0 投票
4 回答
5785 浏览

c# - 在异步方法中不等待任务的注意事项

我正在开发一个 Web API 项目,该项目使用 Azure 的托管缓存服务将数据库结果缓存在内存中,以缩短响应时间并减少数据库的重复流量。尝试将新项目放入缓存时,有时会抛出特定于缓存的异常,代码为DataCacheErrorCode.RetryLater. 自然地,为了稍后重试而不需要阻止这种方法,我做了它asyncawait Task.Delay稍后再试一次。以前,开发人员Thread.Sleep在那里硬编码了一个确实会损害应用程序性能的代码。

方法签名现在看起来与此类似:

Put在此更改之后,我从应用程序中调用以前同步版本的指示的所有其他位置收到约 75 个编译器警告:

由于不等待此调用,因此在调用完成之前继续执行当前方法。考虑将“等待”运算符应用于调用结果。

在这种情况下,由于Put不返回任何内容,因此让此操作一劳永逸对我来说是有意义,因为我看不出有任何理由阻止调用它的方法的执行。我只是想知道是否有任何危险或陷阱允许大量这些即发即弃Task的在后台运行,因为Put可以经常调用。或者我应该等待,因为 99% 的时间我不会收到重试错误,并且Task几乎会立即完成。我只是想确保我不会因为拥有太多线程(或类似的东西)而受到任何惩罚。

0 投票
0 回答
62 浏览

.net-4.0 - 如何使应用程序 FireandForget?

下面是我在 .Net 4.0 中用于开发 Http Module 的代码。但是当程序运行时,我发现它要等待几秒钟才能运行应用程序。但我希望它是 FireAndForget() [不应该等待结果]。我怎样才能让它FireAndForget?

0 投票
1 回答
272 浏览

c# - 实现 IRegisteredObject 时不调用 stop 方法

当 w3wp.exe 被 IIS 关闭时,我试图写一行日志。但是我从未见过该日志出现。

另外,我在本地尝试使用虚拟的 asp.net mvc 应用程序。在控制器中,我执行了一个虚拟 for 循环以保持请求继续进行,同时我有一个下面检测器的副本

https://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Host.SystemWeb/ShutdownDetector.cs

想如果我强制杀死 w3wp.exe 进程,应该触发停止方法。但没有运气。

有人知道吗?

0 投票
1 回答
362 浏览

udp - 如何实现从一个进程到另一个进程的即发即弃消息传递?

单击按钮时,一条简单的消息将从一个进程发送到另一个进程,该消息将只是一个带有字符串参数的简单命令,总计大约 50 个字符(绝对小于 1k),例如

并满足以下条件:

  • 必须简单(即没有成熟的消息传递系统)
  • 必须在 Windows 上运行,应该在 Unix上运行
  • 下图显示了我的实际需求,但它应该适用于任何主要的编程语言/运行时
  • 性能并不重要,对于这样一个简单的消息,整个发送/接收周期不应超过一毫秒
  • “保证交货”等不是必需的
  • 发件人不关心接收者是否收到消息- 或者首先是否有接收者
  • 无需加密/认证/授权

在维基百科中,有一长串IPC 的方法,但最简单的方法似乎是非连接套接字选项。

有没有比简单地发送/接收UDP数据包(每个数据包一条消息,TTL = 0)更好的方法(更容易实现/维护/调试,更多的未来证明......)来实现它,比如说加上JSON(de ) 序列化器?

在此处输入图像描述

0 投票
0 回答
581 浏览

design-patterns - TCP上的Fire and forget模式,连接、发送和断开连接好吗?

我想知道如何通过 TCP 实现即发即弃模式。我认为这三个步骤是连接发送消息和断开连接,但让我思考它的真正实现方式是与三次握手相关的开销。由于这种开销,也许它是通过持久连接实现的?我不这么认为,但我需要对此进行一些澄清。