Vercel - Cron 处理,仅在部署时执行代码

问题描述 投票:0回答:1

我正在学习如何在 Vercel 上设置 cron,今天我们在 Heroku 上运行一些任务,我们想看看它们在这个平台上的执行情况。

我可以在使用情况报告中看到 cron 正在被触发,但是,我无法真正看到正在执行的代码。

但是,当我们部署更改时,它似乎起作用了。

enter image description here

图像显示 cron 按预期被触发。

我们还可以看到函数已经返回了数据,时间与上次部署时间一致。

https://dw-router.vercel.app/api/pricefeed

代码:

//import type { VercelRequest, VercelResponse } from '@vercel/node';
import type { NextRequest, NextResponse } from 'next/server';
import { PriceFeed } from '@/lib/wharfsession';

export const revalidate = 0;
// GET for App Router, handler for Page Router
export async function GET(req: NextRequest, res: NextResponse) {
        console.log('---START---');
/*
        const authHeader = req.headers.get['authorization'];
        if (authHeader !== 'Bearer ${process.env.CRON_SECRET}') {
            return res.json({ success: false });
        }; */
        if ( req.method === 'GET' ) {
            try {
                const result = await PriceFeed(); //session.transact({ action: transferAction });

                //return res.status(201).json({ success: true, data: result });
                return Response.json({ success: true, data: result, status: 201 });
            } catch(err) {
                //return res.status(400).json({ success: false, data: err });
                return Response.json({ success: false, data: err, status: 401 });
            };
        } else {
            return Request.arguments;
        };
}

vercel.json:

{
    "rewrites": [
        {"source": "/(.*)", "destination": "/"}
    ],
    "crons": [
        {
            "path": "/api/pricefeed",
            "schedule": "*/5 * * * *"
        }
    ]
}

我不明白的是 cron 如何调用 GET ?为什么 Vercel 不支持通用处理程序,而这正是他们在无服务器 API 路由示例中所提供的?

我确信我在某个地方错过了一些东西。我想做的就是运行代码,就好像它在 *nix cron 或 Node.js 中运行一样

尝试了 Vercel 的不同示例和社区成员的旧示例。

预计 cron 无需部署接口即可运行 Pricefeed() 函数。 该项目正在生产中。 我正在使用 Pro 计划。

package.json:

{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@vercel/node": "^3.0.17",
    "@wharfkit/antelope": "^1.0.7",
    "@wharfkit/session": "^1.2.7",
    "@wharfkit/signing-request": "^3.1.0",
    "@wharfkit/wallet-plugin-privatekey": "^1.1.0",
    "next": "^14.1.0",
    "next-server": "^9.0.5",
    "prettier": "^3.2.5",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "vercel": "^33.4.1"
  },
  "devDependencies": {
    "@types/node": "^20.11.16",
    "@types/react": "^18.2.55",
    "typescript": "^5.3.3"
  }
}

蒂亚

/F

next.js cron vercel
1个回答
0
投票

我从头开始重新创建了该项目,现在一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.