问题标签 [agenda]
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.
node.js - GraphQL:如何从计划的议程作业发布订阅
稍后我的问题也被问到Trigger Apollo Subscription 与 Agenda,但没有答案,我没有足够的声誉在那里发表评论。不知道该怎么做,所以我发布了一个新问题。
我正在使用 graphql-yoga 并使用 pubsub 来触发订阅。我有一个突变,它接收 pubsub 作为上下文参数。从那里,我可以通过 pubsub.publish 发布我的订阅。这工作正常。
我还通过议程(https://github.com/agenda/agenda)安排工作。当这些作业稍后运行时,我会更新数据库。这也有效。
我的问题是,当我在议程作业中更新数据库时,我还需要将数据库更新发布到订阅。我不知道如何在我的议程功能中访问 pubsub。
我尝试将我已经在突变中的 pubsub 对象包含在我提供给工作的数据中,希望我以后可以访问 pubsub。但这不起作用(不足为奇)。
我找不到任何文档,并且我发现的类似 stackoverflow 问题(上面链接)没有任何响应。
有谁知道是否可以从议程工作中触发订阅?
windows - 使用左侧的 org 文件和右侧的议程启动 Emacs
我想全屏打开 Emacs,两个窗口垂直拆分。我希望我的 todo.org 文件在左侧打开,我的议程视图在右侧打开。
类似的内容出现在本网站的其他几个问题中,但它们并不完全相同和/或我无法使用/理解他们的答案来完全解决我的挑战。
我已经非常接近我的 custom-init.el 文件中的以下内容:
这会正确格式化屏幕,显示我想要的窗口位置和大小。它还会打开我的待办事项文件并将其放在我想要的左侧,但是我在右侧打开了暂存缓冲区。议程已正确创建和格式化,是缓冲区列表中的第三项(scratch、todo.org、议程,然后是我在启动时打开的所有其他 org 文件。)
如此接近,但经过几天的思考和尝试不同的事情,我就是没有到达那里。
javascript - 对底层 npm 包进行更改
我正在使用一个 npm 包,该包被称为agendash
我的 Node 项目的一部分,它使用了议程.js。我现在正在扩展agendash
,以满足我们对项目的需求。我的问题是,当你像这样扩展一个预先存在的 npm 包时,应该怎么做呢?如果我按原样使用,那么我假设我的工作可能会在下一次更新底层包时被清除。
我应该锁定软件包版本吗?还是我应该分叉?如果是后者,那该怎么做呢?或者有没有更好的方法来处理这个?
node.js - `agenda.js` 如何计算`every()` 操作的时区
我agenda.js
在我的 Node 项目中使用,支持 MongoDB 数据库,来处理我们需要运行的批处理过程。这运作良好。但是,我确实对时区有疑问。当我使用该every()
操作时,它似乎接受了作业名称和时间表。所以我一直在为数据库播种工作,如下所示:
请注意,对于上述内容,schedule
是 cron 格式 -- 00 05 * * 1-5
。
这行得通。但是,据我所知,every()
不接受repeatTimezone
. 那么在这些情况下如何计算时区呢?
澄清一下,当我在使用 添加作业后查看数据库中的文档时every()
,该repeatTimezone
属性存在,但其值设置为null
。
其他agenda
操作,如repeatEvery()
,确实接受时区参数,如下所示:
自从我使用 以来every()
,我一直通过首先使用 为数据库播种every()
,然后运行 MongoupdateMany()
将 timzeone 显式添加到所有作业中来管理它:
但奇怪的是,agenda
即使我没有像我那样明确地将repeatTimezone
属性值添加到作业中,它似乎也计算了相同的时间。
我不明白这里发生了什么?运行时间是如何计算的every()
,有没有办法传入时区?
仅供参考:我与需要在数据库中设置的时区不在同一个时区。
node.js - 议程 | 超时溢出警告
- Node.js 版本:v12.13.1。
- 操作系统:Microsoft Windows 10 Pro,版本:10.0.18362 Build 18362
NPM 包:
/li>
我只运行议程作业。几乎所有作业都在从其他 API 同步数据并将所有数据保存到 MongoDB。有时在我启动项目一段时间后,我会收到此错误:
(node:26128) TimeoutOverflowWarning: 2591699977 不适合 32 位有符号整数。在 jobProcessing (C:\Users\mailb\OneDrive\Desktop\DST\custom- market\node_modules\agenda\lib\utils\process-jobs.js:258:7) 在 C:\Users\mailb\OneDrive\Desktop\DST\custom-market\node_modules\agenda\lib\utils\process-jobs。 js:217:9 在 C:\Users\mailb\OneDrive\Desktop\DST\custom-market\node_modules\agenda\lib\agenda\find-and-lock-next-job.js:81:7 在 C:\ Users\mailb\OneDrive\Desktop\DST\custom-market\node_modules\agenda\node_modules\mongodb\lib\utils.js:414:17 在 C:\Users\mailb\OneDrive\Desktop\DST\custom-market\node_modules \agenda\node_modules\mongodb\lib\utils.js:401:11 在 ClientSession.endSession (C:
javascript - 议程作业库,如何在每个月的最后一天午夜或一天的最后一分钟执行 cron
议程作业库,请帮我在每个月的最后一天 23:50 运行 cron。
node.js - 从回调中调用的 Stub Node.js 实用函数(Sinon 和 Agenda)
我正在将议程用于后台作业,并且我正在尝试测试定义方法以确保 1.) 议程.define 被调用和 2.) 议程内部的方法被调用 (triggerSend)。
我已经包含了我用来进行此测试的四个文件:1.) 议程作业定义 2.) triggerSend 实用程序函数 3.) sinon 存根 4.) 实际测试。我将非常感谢您提供的任何和所有帮助!
照原样,agenda.define 被调用了两次,我可以看到 triggerSend 的日志被调用了两次。第一个 triggerSend 显示一个作业对象,第二个 triggerSend 日志显示undefined
.
我想弄清楚如何使用 sinon 准确捕获被调用的议程定义和triggerSend。
议程/campaigns/jobs/test.js(带有议程.define的工作):
campaign/ trigger.js triggerSend 实用程序函数在议程定义中调用:
固定装置/存根/index.js
test.test.js:
npm - 我如何在议程工作中通过约会形式
我怎样才能将动态日期传递给议程?``如果我在这个格式中给予它会下降 2020 年 4 月 2 日如果我给 5 分钟甚至每周一次,如果工作有人可以帮助我如何给时间和指定日期
node.js - Nodejs议程作业调度程序-如何将在同一数据库扫描中运行的多个作业分组为1个批处理作业?
问题
我有购买服务,用户可以使用它来购买/租用游戏、媒体、电影等数字资产......当购买事件发生时,我创建一个作业并安排它在计算的过期日期运行以删除此类资产的密钥。
一切正常。但是,如果我可以将那些将在同一个议程数据库扫描中运行的作业分组到 1 个批处理作业中以删除多个键,那就更好了。
这将减少键和议程集合中的大量数据库读/写/删除操作,它还会在大多数情况下增加可用内存,因为它不是存储 100 多个作业以在扫描中运行,而是仅存储 1 个作业到删除 100 多个键。
研究
我在 Agenda repo 中找到的最接近的功能是 unique()。它允许用户查找和修改与 unique() 中定义的字段匹配的现有作业。如果它可以将新工作与现有工作结合起来,那将解决我的问题。
执行
在潜入并修改包之前,我想检查是否已经有人解决了我遇到的问题并有一些想法可以分享。
另一个不接触包的解决方案是创建一个内存字典,以使用以下策略为特定的数据库扫描累积作业:
javascript - 如何将节点集群模式与议程 cronjobs 一起使用
我目前正在使用 nodejs 和议程来运行 cronjobs。目前,有 10 个 cronjobs,并且由于节点是单线程的,当所有这些任务同时运行时,每个任务都需要更长的时间才能完成。
我已经通过运行每个作业正在运行的命令来尝试 pm2,pm2 start app.js -i max
因为它有多个可用的内核。
例如,我在节点进程启动后调用一个函数,同一个函数被调用 8 次(我的服务器上有 8 个内核)。当我使用 npm cluster 时也会发生同样的情况。
如何使用 pm2 或 npm 的集群模式从这里https://nodejs.org/api/cluster.html使用 CPU 的多个内核,以便每个 cronjob 都可以在不同的处理器上运行?
请指教!