【问题标题】:Running a program while the computer is turned off [closed]在计算机关闭时运行程序[关闭]
【发布时间】:2021-03-06 13:55:53
【问题描述】:

我做了一个程序。它每小时自动发布一次推文。当计算机关闭时,我该怎么做才能使其工作。比如有一个账号叫@everycolorbot,这个账号的工作逻辑是什么?

【问题讨论】:

  • 据我所知,当计算机关闭时,它无法运行程序。在计算机关闭时运行程序似乎是一个 XY 问题——也许把它放在glitch 或其他一些云主机上。我在 heroku 上托管我的 twitter 机器人,它每天运行 worker task
  • 对于everycolorbot,只需look at the source。它在 heroku 上运行。
  • 我用c#写了这个程序。我应该使用哪个云主机?
  • @Myrias 无论您想要哪一个,都可以满足您的需求。寻求建议对于 StackOverflow 来说是题外话。做一些研究,尝试一些选项,看看哪些对你有用,哪些对你没有用。
  • 顺便说一句;这看起来正在使用一个热循环,该循环持续检查很少满足的时间条件;你真的应该认真研究await Task.Delay(...),例如await Task.Delay(TimeSpan.FromMinutes(60)) - 效率更高;请注意,这当然不会帮助您在计算机关闭时运行任何东西;为此,您需要在其他人的计算机上运行它,这可能需要以不同的方式编写

标签: c# twitter bots


【解决方案1】:

您可以使用 Azure Functions 执行此操作,只需为计算时间付费:

  1. 创建一个新的Functions project。在 Visual Studio 或在线中。我的偏好是 VS,因为我可以将代码保存在源代码管理中。您可能需要打开 Visual Studio 安装程序并安装 Azure 工具 - 无论哪种方式,请查看我刚刚在此处发布的 Azure Functions 链接中的文档,以确保您使用的是最新信息。

  2. 在创建函数项目时,选择Timer trigger

  3. 采用默认值,它将为您创建一个新的函数项目:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace TweetMyStuff
{
    public static class MyTweetBot
    {
        [FunctionName("MyTweetBot")]
        public static void Run([TimerTrigger("0 * * * *")]TimerInfo myTimer, ILogger log)
        {
            // your tweet logic here
        }
    }
}

请注意,我将 TimerTrigger 参数属性上的 chron 设置设置为 "0 * * * *" 这将在每小时整点启动该功能。 Azure 有chron expression syntax documentation,它与 Linux 语法匹配(因此您可以通过网络搜索找到更多信息)。

  1. 最后,部署和监控 - 您可以访问 QuickStart for Visual Studio 以帮助您朝着正确的方向开始。

【讨论】:

  • 谢谢,但我听不懂。我在哪里输入密钥和令牌?我已经用 tweetinvi 制作了一个控制台程序。我不能发布吗?
  • 我在我的问题中添加了我的代码
  • @Myrias 你真的不想发布问题中显示的代码以在你支付计算时间的云服务器上运行 - 你有热循环,所以它只是 burning 计算;此处显示的方法是一种以计划方式非常有效地运行某事的好方法
猜你喜欢
  • 2015-09-09
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 2010-09-06
  • 1970-01-01
相关资源
最近更新 更多