小编dpv*_*dpv的帖子

使用 Django + Telegram + Celery 执行周期性和非周期性任务

我正在构建一个基于 Django 的项目,我的目的之一是拥有一个从 Telegram 组接收信息的 Telegram 机器人。我能够实现机器人在 Telegram 中发送消息,没有任何问题。

目前,我有几个与 Beat 一起运行的 Celery 任务以及 Django Web(已解耦)。这里一切都好。

我已经看到 python-telegram-bot 正在一个示例中运行一个函数(https://github.com/python-telegram-bot/python-telegram-bot/blob/master/examples/echobot.py)它正在等待空闲以接收来自 Telegram 的数据。现在,我在 Celery 中的所有任务此时都是周期性的,并且由 Beat 每 10 或 60 分钟调用一次。如何在我的配置中使用 Celery 运行这个非周期性任务?我说非周期性是因为我知道它将等待内容直到被手动中断。

  • 姜戈~=3.2.6

  • 芹菜~=5.1.2

     CELERY_BEAT_SCHEDULE = {
     'task_1': {
         'task': 'apps.envc.tasks.Fetch1',
         'schedule': 600.0,
     },
     'task_2': {
         'task': 'apps.envc.tasks.Fetch2',
         'schedule': crontab(minute='*/60'),
     },
     'task_3': {
         'task': 'apps.envc.tasks.Analyze',
         'schedule': 600,
     },
    
    Run Code Online (Sandbox Code Playgroud)

    }

在我的tasks.py 中,我有这样的任务之一:

@celery_app.task(name='apps.envc.tasks.TelegramBot')
def TelegramBot():
    status = start_bot()
    return status
Run Code Online (Sandbox Code Playgroud)

作为 start_bot 实现,我只是复制了 echobot.py 示例,并在其中添加了我的 TOKEN(当然示例中不同命令的函数也在那里)。

python django celery telegram python-telegram-bot

0
推荐指数
1
解决办法
806
查看次数

使用LINQ选择组中的字段

如何在LINQ中选择属于组的字段?

例如.:

var result =   from a in table
           where Date >= DataStart && Date <= DataStop
           group a by a.Field2 into b
           select new
               {
                   AA = b.Sum(x => x.Total),
                   BB = a.Field2
               };
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net

-2
推荐指数
1
解决办法
124
查看次数

标签 统计

asp.net ×1

c# ×1

celery ×1

django ×1

linq ×1

python ×1

python-telegram-bot ×1

telegram ×1