计划任务的限制(或者任务持久化是如何实现的)?

2024-01-08

我开始阅读 Hangfire 文档,但没有发现任何有关任务限制的信息。

正如声明的那样,任务(或作业)存储在某个地方。

由于它们只是代表,据我所知,唯一可以存储的东西是代表“主体”(IL?)。但是可能存在闭包,它为任务提供了一些上下文,例如一些外部服务,可能需要加载额外的程序集来运行其代码等。

Hangfire 如何处理这个问题?
任务的主体中可以包含任何指令吗?或者有任何限制吗?


当您创建作业时,它会调用Job.FromExpression https://github.com/HangfireIO/Hangfire/blob/a5761072f18ff4caa80910cda4652970cf52e693/src/Hangfire.Core/Common/Job.cs#L233,如果您向它传递除方法调用表达式之外的任何内容,它将引发异常。所以你唯一可以传递的东西BackgroundJob.Enqueue是一行,该行调用一个函数。

然后,它将对象的类型和所有传入的参数序列化为 JSON,使用JobHelper.ToJson https://github.com/HangfireIO/Hangfire/blob/a5761072f18ff4caa80910cda4652970cf52e693/src/Hangfire.Core/Common/JobHelper.cs#L33。当您传入类的实例时,该实例不会被序列化,只有类型会被序列化,如果执行跨越进程边界,它将丢失内部状态。

您可能想阅读旧的 Hangfire 博客网站上的博客文章“您的方法准备好在后台运行了吗? http://odinserj.net/2014/05/10/are-your-methods-ready-to-run-in-background/"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计划任务的限制(或者任务持久化是如何实现的)? 的相关文章

随机推荐

  • Puppeteer 从多个 HTML 字符串生成 PDF

    我正在使用 Puppeteer 从 HTML 字符串生成 PDF 文件 阅读文档 我发现了两种生成PDF文件的方法 首先 传递一个 url 并调用goto方法如下 page goto https example com page pdf f
  • 为什么循环指令很慢?英特尔就不能有效地实施它吗?

    LOOP 英特尔参考手册条目 http felixcloutier com x86 LOOP LOOPcc html 减少 ecx rcx 如果非零则跳转 https stackoverflow com questions 46881279
  • 迭代字典列表

    我有一个列表 myList 其中每个元素都是一个字典 我希望迭代这个列表 但每次我只对每个字典中的一个属性 年龄 感兴趣 我也有兴趣记录迭代次数 I do for i entry in enumerate myList print i pr
  • 声纳运行器运行时出现 SocketTimeoutException

    我正在使用声纳 一切都工作正常 然后大约一个月没有使用它后 我在运行 sonar runner bat 时开始收到以下异常 我正在使用嵌入式 h2 数据库服务器并使用默认端口 INFO Error stacktraces are turne
  • SSIS 调试器不会显示进度

    只是想知道是否有人遇到过这个问题 它似乎不是特定于包的 并且是零星的 我只是在 Visual Studio 中启动 SSIS 调试器 调试器加载但不执行任何操作 我知道包正在运行 因为我可以在任务管理器中看到 DTSDebugger 如果我
  • 在 Apache Airflow 中运行超过 32 个并发任务

    我正在运行 Apache Airflow 1 8 1 我想在我的实例上运行超过 32 个并发任务 但无法使任何配置发挥作用 我正在使用 CeleryExecutor UI 中的气流配置显示 64parallelism and dag con
  • JavaScript for 循环问题

    for循环可以重复一个数字3次吗 例如 for i 0 i lt 5 i 创建 1 2 3 4 5 我想创建一个执行此操作的循环 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 那可能吗 for i 1 i lt 5 i for
  • 获取 MethodBase 对象的最快方法是什么?

    我有一个 Type 对象和一个方法名称 Type type string methodName 我需要一个方法 methodName 的 MethodBase 对象 位于堆栈中的某个位置 这有效 MethodBase nemo StackT
  • Detours - 挂钩类成员函数 - 设置目标函数偏移量的语法?

    对于非类函数 我可以简单地声明要绕行的函数的偏移量 如下所示 typedef int cdecl SomeFunc char pBuffer int size SomeFunc Real SomeFunc SomeFunc 0xCAFEBA
  • 在android中添加水印图像

    我有代码可以在图像中添加水印 如下所示 public static Bitmap mark Bitmap src String watermark Point location Color color int alpha int size
  • 为什么 Edge 主体滚动条与 Firefox 主体滚动条不同?

    我正在创建一个聊天列表 它在 Firefox 上运行良好 但在 Microsoft Edge 上却不起作用 根的CSS div class chatting chatting position fixed bottom 5px right
  • 将客户端证书传递给 Web 服务,而无需设置系统范围的属性

    我正在尝试使用 JAX RPC 实现将客户端证书传递给 Web 服务 Web 服务采用 rpc 编码风格 到目前为止 我可以通过设置系统属性来做到这一点 System setProperty javax net ssl keyStore c
  • 当用户尚未登录时,FB.ui() 在 Safari 中通过异步请求给出错误

    我正在尝试让用户能够在我的外部网站上的 Facebook 墙上发布内容 我在 Safari 中遇到问题 如果用户未登录 即他们尚未完成调用 FB login 的流程 则在调用 FB ui 时会收到以下 JS 错误 类型错误 未定义 不是对象
  • ServiceLoader.next 导致 NoClassDefFoundError

    我这么问是因为我完全not我确信我做了正确的事 我正在使用 Eclipse 进行 Web 项目 我们在包中将其称为 WebProject 废话 com web project 我希望 WebProject 在运行时加载 JAR 插件 所以我
  • 上下文、AsyncTask 和轮换更改

    这是一个很好的做法吗getApplicationContext 使用 AsyncTask 以便不必附加和分离 Activity以避免内存泄漏when发生旋转变化并且活动被破坏 我认为它应该是正确的 因为我实际上需要一个依赖于洞应用程序的上下
  • 使用 Gmail 凭据登录

    有没有一种方法可以使用 Google 凭据来获取基本用户信息 例如 电子邮件 姓名 性别 并在我的应用程序中使用它们 这就像允许用户使用 Gmail 登录我的应用程序一样 我也问了同样的问题here https stackoverflow
  • ggplot2 二维密度权重

    我正在尝试使用 R 中的 ggplot2 用二维密度轮廓绘制一些数据 我得到一个有点奇怪的结果 首先 我设置了 ggplot 对象 p lt ggplot data aes x Distance y Rate colour Company
  • 如何让 gVim 的 vimdiff 忽略大小写?

    我正在尝试比较两个程序集文件 其中一个文件全部大写 另一个文件全部小写 许多行在大小写和空格方面都是相同的 我尝试了以下操作 同时两个缓冲区处于差异模式 set diffopt icase set diffopt iwhite diffup
  • List.Add 似乎是重复的条目。怎么了?

    我有一堂这样的课 public class myClass public List
  • 计划任务的限制(或者任务持久化是如何实现的)?

    我开始阅读 Hangfire 文档 但没有发现任何有关任务限制的信息 正如声明的那样 任务 或作业 存储在某个地方 由于它们只是代表 据我所知 唯一可以存储的东西是代表 主体 IL 但是可能存在闭包 它为任务提供了一些上下文 例如一些外部服