- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我有一个错误,真的让我很紧张,哈哈。
所以基本上我有一个 nodejs 应用程序向电子商务网站发出请求以检索订单,我们的流程基本上是这样的:我们向这个网站发出 GET 请求,我们检索等待接受的订单,然后我们“接受”它们我们可以读取收货地址,然后我们解析订单、其产品和收货地址,以便我们的系统可以注册它。
所有这一切现在每 5 分钟完成一次,每 10 分钟完成一次,我们减少它会减少丢失的订单数量 :(,所以无论如何,这是通过我们在 NodeJS 上安排的 cron 作业完成的。这是 cron: */5 * * * *
这个应用程序是用 NodeJs LTS 编写的,并在 ubuntu docker 容器中运行。
这是安排 cron 的代码:
export function createOrderCrons(): void
{
cron.schedule(
process.env.ORDER_REGISTER_TIMELAPSE,
async () =>
{
await consumeRegisterOrders();
cronLogger.info('Runing get orders task');
},
cronOptions
);
cron.schedule(..........);//redacted
}
这是 cron 调用的函数:
export async function consumeRegisterOrders(): Promise<void>
{
try
{
await Axios.post(`${process.env.HOST}/orders/`);
cronLogger.info(`${process.env.HOST}/orders/`);
}
catch (error)
{
if (!HTTP.TOO_MANY_REQUESTS)
{
errorLogger.info('Consume Register Orders endpoint error:', error);
}
}
}
这是读取订单的代码:
export async function getOrders(auth: any): Promise<any[]>
{
try
{
const orders: IOrder[] = [];
const ordersToGet: string[] = [];
const res = await miraklApi.get(
'/orders?order_state_codes=WAITING_ACCEPTANCE&paginate=false',
{
headers: auth.headers
}
);
errorLogger.info(`orders retrieved from waiting_acceptance ${res.data.orders.length}`);
for(let i = 0; i < res.data.orders.length; i++)
{
const order = res.data.orders[i];
order.warehouseSialId = auth.warehouseSialId;
await validateOrder(order, true, auth);
await ordersToGet.push(order.order_id);
}
errorLogger.info(`orders to get with folios ${ordersToGet.length}`);
if(ordersToGet.length > 0)
{
const response = await miraklApi.get(
`/orders?order_ids=${ordersToGet.join(',')}&paginate=false`,
{
headers: auth.headers
}
);
errorLogger.info(`orders retrieved with address ${response.data.orders.length}`);
await orders.push(...response.data.orders);
}
errorLogger.info(`orders to return ${orders.length}`);
return await orders;
}
catch (error)
{
errorLogger.info(`error inside of get orders function ${error}`);
return [];
}
}
这是端点级别的代码:
ordersRouter.post(
'/',
async(ctx: Context): Promise < void > => {
try {
const auth = {
headers: {
// eslint-disable-next-line @typescript-eslint/naming-convention
Authorization: `${
process.env.MIRAKL_API_TOKEN
}`
},
warehouseSialId: process.env.WAREHOUSE_ID
};
const orders = await getOrders(auth);
for (let i = 0; i < orders.length; i++) {
const order = orders[i];
let task: ITask = null;
try {
order.warehouseSialId = auth.warehouseSialId;
const products: IProduct[] = await mapToMindiProducts(order.order_lines);
const mappedOrder = await mapToMindiOrder(order, products);
await registerOrder(mappedOrder);
if (onfleetIsEnabled) {
task = await getOnfleetTaskById(order.shipping.externalId);
}
} catch (error) {
errorLogger.info(`error inside of one cycle to register an order ${JSON.stringify(error)}`);
continue;
}
errorLogger.info(`before change status to shipped ${order.order_id}`);
await sendTaskToMirakl(task, order, auth);
}
} catch (e) {
errorLogger.info(`error at endpoint /orders ${JSON.stringify(e)}`);
}
ctx.status = HTTP.OK;
}
);
这里是发生了什么的一瞥,你可以看到我在第一次迭代中接受了两个订单
最佳答案
您应该使用 try catch 来结束函数 consumeRegisterOrders
因为它可能会引发错误并且您的计划作业将被终止。
export function createOrderCrons(): void {
cron.schedule(process.env.ORDER_REGISTER_TIMELAPSE, async () => {
try {
await consumeRegisterOrders();
cronLogger.info('Runing get orders task');
} catch (err) {
console.error(err);
}
}, cronOptions);
}
关于javascript - Cronjob 停止执行 nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884665/
我已经安排了一些 cronjob。 当我执行 crontab -e 时,我会找到现有的 cronjobs。 * * * * * #Runs every minute 30 * * * * #Run
在 Linux Ubuntu 上,我有一个 python 脚本,可以在本地按时运行良好,每 5 分钟一次,用于 cronjob: */5 * * * * /usr/bin/python /matt/p
我的服务器上有一些 PHP 脚本,用于定期 cron 作业(例如,用于日常交流和更新排行榜)。 为了防止外人手动运行这些脚本(例如在浏览器中运行 http://url/script.php),我在运行
我的 crons 工作正常,我用简单的文件输出和 bash 脚本对其进行了测试,但在执行我的 python 脚本时,我没有尝试过任何工作。 所以这就是我所做的。 像往常一样,我在脚本中添加了一个 sh
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
本文通过 Google 翻译 Cron Jobs – Linux Privilege Escalation - Juggernaut-Sec 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字
我有很多 php 脚本,我想作为 cronjob 执行。这些脚本以正确的顺序执行并且不同时运行很重要。如何设置相互运行的 cronjobs? 最佳答案 每个 cron 作业都在计划运行时运行,而不管是
我对 kubernetes 很陌生,在这里我厌倦了一个 cronjob yaml,其中每 1 分钟创建一次 pod。 apiVersion: batch/v1beta1 kind: CronJob m
因此,我设置了一个 cronjob 来运行以下命令: php/var/www/path/to/cron/do-stuff.php 路径是正确的。该目录归 www-data 所有。 该脚本执行以下操作:
我在我的 Centos 7 服务器上运行了 50 多个 cronjob,就像下面给出的那样。 curl -s https://url.com/file.php 每 10 分钟运行一次。从 shell
当我通过 SSH 连接到我的 Ubuntu 6.4 VM 并运行 python nomi.py ,我的脚本按原样执行。 我按如下方式设置了我的 crontab 文件,以便每 15 分钟运行一次脚本:
我正在尝试创建一个遵循以下规则的 cronjob: 周一至周五 8:00 - 16:00 每 2 分钟 所以基本上它必须在周一到周五运行,在 8 点到 16 点之间每隔一分钟运行一次。 在这些时候,它
所以在过去的几分钟里我一直在查找 cronjobs ......我大致了解如何将一个添加到我的网站 ubuntu 系统......我需要让我的系统每分钟运行一次 Jade 米作业(根据到我正在使用的软
我正在冒险进入设置 cronjobs 的世界,并尝试了解更多关于服务器端的信息。为此,我尝试在我的服务器上设置一个 Cronjob,以便在两天内运行两个单独的 Ruby 脚本。 问题: 我将 cron
我有手动运行良好的脚本,但在通过 cronjob 运行时没有获得所需的输出。如果脚本有任何问题,请告诉我。 #!/usr/bin/ksh file1=$(find *-* -mtime 1) file
不确定我做错了什么,但我遇到了 CronJobs 停止安排新作业的问题。似乎只有在启动新作业失败几次之后才会发生这种情况。在我的特定情况下,由于无法拉取容器镜像,Jobs 无法启动。 我并没有真正找到
我创建了一个用于生成 RSS 提要的 php 脚本,该提要最终将通过 Cronjob 运行。 所有 php 文件和生成的 RSS xml 都将位于网站的子文件夹中。如果我在本地开发机器上的同一目录中使
我在这里检查了一种解决方案,但似乎找不到。我正在处理大约300kb / sec的非常慢的wan连接。对于我的下载,我使用的是远程盒,然后将其下载到我的房子。我正在尝试运行一个cronjob,它将每小时
我希望每 15 分钟触发一次作业,但它始终每 30 分钟触发一次。 更新: 我通过运行简化了问题: kubectl run hello --schedule="*/1 * * * *" --resta
我有一个时间表: schedule: "0 10,14,18 * * *" ,我想在上午 10:00、下午 2:00、下午 6:00 运行此作业。 由于我位于 UTC+8 时区,因此这个 cronjo
我是一名优秀的程序员,十分优秀!