我正在构建一个基于 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(当然示例中不同命令的函数也在那里)。
如何在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)