LoginSignup
7
8

More than 5 years have passed since last update.

LinebotをJobキュー使って非同期処理をする

Last updated at Posted at 2016-06-08

さくっとできそうだったので、Pythonを使ってLinebotを操作してみることした。
まず、Linebot自体は、 データを受け取り、そして、 データを返す ことしかしない。

なので、ちょーざっくり言うと、基本的に2つのことを行うために使うケースが多いと考えられる。

  • ユーザーからのデータをcallbackで 受け取り解釈 する
  • 解釈したデータを使って 処理を行い返答 する

この、 解釈の方法返答のフォーマット によって、 Botの機能/性質 が決まる。

以下、LinebotモジュールをPythonでざっくり準備してみた。
使い方/実行方法などは、README.mdにあるので、参考にしてもらえればと思う。
Linebotモジュール: https://github.com/JFK/linebot

ここでは、上記のモジュールとrq(jobキューワーカー)を使ってLinebotを操作してみる。

rqを使ってLinebotを実行

rqの準備

job_queue.py
from rq import Queue
from redis import Redis

def queue(name='low'):
    redis = Redis()
    q = Queue(connection=redis)
    return q

rqを使って実行

from job_queue import queue
from linebot import LINEBot
...
# callbackのデータをパースする
bot = LINEBot(<CHANNEL_ID>)
receive = bot.receive_callback(json_body)
to = receive.content('from')
text = 'Hi!'

# テキストを受けっとた場合
if receive.is_message and receive.content('contentType') == ContentType.TEXT:
    # jobキューにセットして実行する
    queue.enqueue(bot.send_text, [to], text)
...

みたいな感じ。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8