質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

解決済

1回答

654閲覧

Django:ツイッターAPIを利用したリアルタイム監視BOT兼アプリをHeroku上に構築する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

1クリップ

投稿2022/08/13 14:04

編集2022/08/14 03:19

Djangoと twitter APIでリアルタイムにツイートを収集し、それをDjango側に表示するというアプリを作成しました。
ツイート収集用のファイルは以下のファイルを参考にdjangoのアプリ外に置きつつも、djangoで構築したモデルをそのまま利用できる設定にしています。

Django モデルをスクリプトから使用する

StreamingClient(tweepy利用)を記述した上記ファイルを実行する事で、Twitter上のタイムラインを常時監視し、条件に合ったツイートを取得しています。

ローカル環境では上記ファイルをターミナルで実行するだけで目的が果たせますが、本番環境(Heroku)で同じ事を実現するにはどのようにしたら良いのかが分かりません。
Heroku Schedulerなるアドオンもありますが、これは定期実行をするためのものであり、常時実行しておくには不向きかと思います。

Heroku Scheduler

その他自分なりに色々と調べたのですが、解決策が見つかりません。
何か良い方法をご存知の方がいましたら教えて頂けますと幸いです。
よろしくお願いします。

※以下追記となります。
ツイートを収集する際に収集したツイートには自動リプライをする仕様ですので、可能であれば定期実行ではなくリアルタイムに監視をしている設計が望ましいです。
ただ、その方法に関しましてはコマンド実行による監視ではなくても構いません。
常時監視及びリアルタイム返信に関しましては以下の記事を参考に構築しました。

#本田とじゃんけん を(簡易的に)作成する方法

インターネット上でTwitterボットについて調べてもHeroku Scheduler を利用し定期に実行する方法はありますが、常時監視する方法が見当たらず息詰まっています。
どんなアイディアでも構いませんの、アドバイス頂けると助かります。
よろしくお願いします。

プログラムの流れとしては自分宛のメンションの入ったツイートがされたらそれをリアルタイムで収集し、djangoのアプリ側で表示するといったものになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ターミナルと同じ感じで実行するのであれば、

heroku run

Heroku dyno の内部で 1 回限りのプロセスを実行します。

を使う感じでしょうか。

heroku run は、Webで稼働している dyno とは別の One-off dyno が動く形になりますので、常時監視するために常時稼働させる場合は Web 用 dyno と heroku run の One-off dyno で2台分の時間課金になります。

また、heroku は、24時間以内に一度 再起動されますので、その都度コマンドを実行する必要がありこの方法は常駐型のプログラムを実行するには向かないと思います。

データ収集の方法を URL アクセス時に実行されるようにするか 定時実行する形に変更するのが良いのではないかと思います。

投稿2022/08/13 23:00

CHERRY

総合スコア25175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/08/14 02:27

CHERRY様 回答ありがとうございます。 コマンド実行の方法は今回の目的を果たすためには不向きなのですね。アドバイスありがとうございます。 コマンド実行によるもの以外でも構いませんので、常時監視に近い方法で現実的なアイディアがあれば教えて頂きたいです。 お忙しい中大変恐縮ですが、可能な範囲で構いませんのでアドバイス頂けると嬉しいです。
退会済みユーザー

退会済みユーザー

2022/08/14 03:21

「データ収集の方法を URL アクセス時に実行されるようにするか 定時実行する形に変更するのが良いのではないかと思います。」 とありますが、データ収集のタイミングをTwitter上で自分宛のメンションが入ったツイートがされた時に実行する事が目的です。 ただ、この方法ですとやはり常時監視が不可欠なのかなと現時点では考えているのですがいかがでございましょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問