我已经创建了一个APICore3.1API项目,在其中我还实现了一些对外部ASP.NET服务的WebAPI调用,然后将其导入并保存到我的本地数据库中。
假设我有一个"/imports/mymethod“路由,它将触发导入运行。
现在我想把它设为windows计划任务,这样它就可以每10分钟运行一次。
When I execute the "exe" file "myproject.exe" it says:
Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000"有没有可能编译我的项目并运行编译后的exe文件,像"myproject.exe -path http://localhost:5000/imports/mymethod“这样的参数,然后它就会用这个方法运行路由?
或者有没有其他方法可以做到这一点?
诚挚的问候
发布于 2020-04-01 10:46:32
如果您在本地计算机上仅出于学习目的运行此api,则以下是最简单的选择。1)提取导入路由背后的导入逻辑,并使用控制台应用程序调用此逻辑,并使用计划任务每10分钟运行一次此函数。重要提示:如果仅在本地计算机上运行,并且您不打算将其部署到生产环境中,请执行此操作
如果您希望在生产环境中实现此功能,那么您几乎没有其他选择
1)您可以编写一个webjob,它与您的web api一起部署,并每10分钟触发一次,然后将数据导入到您的数据库中。请参阅Run background tasks with WebJobs in Azure App Service。您可以在webjob内部编写逻辑以导入数据并插入到数据库中
2)使用时间触发的azure函数,调用需要导入数据库的接口。这种方法,虽然声音增加了另一个项目,你必须管理
3)创建一个定时器触发逻辑app,它执行与2中提到的azure函数相同的逻辑
4)在您的web api中实际将您的路由暴露为"/imports/mymethod“,然后在您的本地计算机上创建一个powershell脚本或批处理文件,该脚本或批处理文件调用web api,并使用windows计划程序将powershell脚本或批处理文件安排为每10分钟运行一次。
我个人的偏好是使用webjob,因为webjob是专门为运行后台任务而创建的。
https://stackoverflow.com/questions/60961930
复制相似问题