【问题标题】:Simulating background task on AppHarbor在 AppHarbor 上模拟后台任务
【发布时间】:2012-02-27 01:33:12
【问题描述】:

我正在使用 System.Runtime.Caching.MemoryCache 在 AppHarbor 上部署的正在运行的 .NET MVC 应用程序上模拟重复任务。

使用 CacheItemPolicy 添加缓存中的条目,其中包含 AbsoluteExpiration 偏移量和 RemovedCallback,该方法调用方法并重新触发在缓存中添加项目(如 here 所述)

MemoryCache 第一次在 Application_Start 中填充。它在本地运行良好,但在 AppHarbor 上部署后似乎无法运行(也尝试使用 HttpRuntime.Cache,结果相同)。

我的应用程序在 AppHarbor 上的 CANOE(免费)帐户下运行,该帐户只有一名工作人员。这是否意味着在升级到某些付费计划之前我将无法模拟后台任务?

谢谢!

【问题讨论】:

    标签: appharbor memorycache


    【解决方案1】:

    您的应用程序必须每隔一段时间就有访问者才能正常工作。除了 StillAlive,Pingdom 也是为您的应用生成请求的好选择。您还应该看看MomentApp。我们预计很快就会准备好后台任务。

    【讨论】:

    • 您如何建议将监控作为实现功能的一种手段?拥有一个依赖于监控状态的功能对我来说似乎真的很业余。你能回答为什么没有正确调用缓存回调的问题吗?谢谢。
    • 首先,我真的很喜欢 appharbor。这无疑是一个好主意。然而,监控旨在监控应用程序的状态并衡量其性能。您应该永远让您的应用程序逻辑依赖于监控的完成或实施方式。你应该尽量减少探测效应;不要依赖它。我你依赖监控,这意味着如果操作人员决定更改它,他们只会破坏应用程序!在现实生活中是不能接受的。抱歉,但鼓励人们使用监控来实施工作人员会使 appharbor 看起来像是业余爱好者的玩具,而不是现实生活应用程序的可靠平台。
    • 您最终依赖监控的原因是您正在构建一个解决方案来运行依赖缓存过期的后台工作程序。我不是要你依赖监控,我只是想帮助你让你的代码正常工作。如果您不想使用 Stillalive 或 Pingdom,MomentApp 应该可以工作。您可能还想查看 Phil Haacks webbackgrounder 项目:github.com/NuGet/WebBackgrounder
    • 我知道 Phil Haacks 的 WebBackgrounder,但我不知道 MomentApp 服务。感谢您的回答,AppHarbor 万岁! :-)
    • 谢谢大家,我使用缓存技巧重新测试了应用程序,现在似乎可以工作了。可能是暂时的问题。与 StillAlive 集成也可以,但免费计划只允许每 4 小时 ping 一次服务器。
    【解决方案2】:

    我认为升级不会有帮助,他们正在努力向 AppHarbor 添加后台作业,但据我所知,它们还可用。

    如果使用https://stillalive.com/ 之类的服务定期访问您网站上的某个页面,然后启动一个新线程并开始运行您的后台任务呢?它作为免费插件提供。

    我正在考虑在等待后台任务功能可用时做这样的事情。

    【讨论】:

    • 我正在考虑从外部轮询页面,但我的任务需要一些时间才能完成。 AppHarbor 在 10 秒左右后超时请求,我不知道该操作是否仍在执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多