Telebot+Celery+pytransitions:对任务的响应



我想用Celery在延时后发送一些消息。用户收到消息后,它将触发新状态。为此,我需要telebot.types.Message对象作为Celery任务中的参数发送。我该如何正确地执行此操作?

我启动Celery任务的转换函数:

def delay_message(self, event):
celery_utils.delay_message.apply_async(kwargs={'response': self.response}, countdown=1) # self.response is telebot.types.Message

芹菜任务:

@celery.task()
def delay_message(response):
machine = routes.DialogMachine(transitions=app.config['transitions'])
machine.response = response
machine.send_random_motivation_message()

send_random_motivation_message()中,我需要telebot.types.Message作为self.response,但无法将此类型发送到Celery任务。

我想你不能发送它,因为它不可序列化,对吧?如果是这种情况,您唯一的选择是根据需要发送字典或元组等多个参数,并在Celery任务中创建telebot.types.Message

您可以尝试使用jsonpickle从pickle telebot.types.Message对象中生成JSON,将其传递给您的Celery任务,然后在任务内部使用jsonpickel重新创建对象。

相关内容

  • 没有找到相关文章

最新更新