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

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

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

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1318閲覧

discord.pyをSynologyNASで常時稼働させたい。

glyzinieh

総合スコア208

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/05/07 04:54

編集2020/05/15 04:02

前提・実現したいこと

discord.pyを使用して地震情報のDiscordBotを作っています。
常に反応できるように常時稼動させたく、自宅にあるSynologyのNAS(Linux)を利用して動かそうと思っています。
レンタルサーバー等を借りても良いと思うのですが、できるだけ無料に近い形で運用したいのでNASを利用しようと思っています。以前、Herokuを利用していたことがあるのですが、無料枠だとスリープしないので時間が足りなくなってしまうことがあったのであまり利用したくないです。

原因・解決策等教えていただきたいです。

サーバーのことについては、あまり詳しくなく的外れなことを聞いてしまっているかも知れませんが、回答していただけると嬉しいです。よろしくお願いします。

発生している問題・エラーメッセージ

  • 4時間程で止まってしまう。(whileの部分に今の時間をファイルに記録するコードを書いた)

該当のソースコード

Python

1import discord 2import requests 3from bs4 import BeautifulSoup 4from collections import OrderedDict 5import asyncio 6import json 7import os 8 9TOKEN = "トークン" 10client = discord.Client() 11 12@client.event 13async def on_ready(): 14 with open('/*/result.txt', 'a') as f: 15 print(os.getpid(), file=f) 16 print('ログイン') 17 asyncio.ensure_future(eew()) 18 19async def eew(): 20 channel = client.get_channel('チャンネルID') 21 while True: 22 #緊急地震速報のAPIを叩き、変化があったらDiscordに送るプログラム(省略) 23 await asyncio.sleep(2) 24 25@client.event 26async def on_message(message): 27 if message.author.bot: 28 return 29 if message.content.startswith("地震"): 30 #震度情報を取得して、Discordに送るプログラム(省略) 31 32client.run(TOKEN) 33

一応、ソースコードを載せておきますが、あまり関係ないと思います。

試したこと

  1. Synologyのタスクスケジューラを利用し、一定時間おきにbashを実行しプログラムの再起動

→緊急地震速報の部分のループが実行されなかった。
0. SSHからコマンドに&をつけ、バックグラウンドで実行
→4時間程で止まってしまっていた。

補足情報(FW/ツールのバージョンなど)

  • Python 3.5.1
  • discord.py==0.16.12(async版)
  • Synology DS218j DSM 6.2.2

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

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

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

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

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

x98000

2020/05/07 10:53

「知らない間に止まってしまったり」するのはNASの省電力設定(スリープなど)の影響に見えますが確認済みですか?単純な常駐プログラムが停止しないことを確認してみてはどうでしょうか。
glyzinieh

2020/05/07 11:00

ありがとうございます。確認してみます。
guest

回答1

0

素人考えですがcronに書いちゃえば良いのではないでしょうか。
#synoservicectl --reload crond
をお忘れなく…

投稿2021/09/17 04:13

wkamimur

総合スコア12

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

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

glyzinieh

2021/09/18 05:02

回答ありがとうございます。試してみたいと思います。 「#synoservicectl --reload crond」というコマンドを見たことがなく、調べてもヒットしなかったのですが、どのようなコマンドですか?
wkamimur

2021/09/18 05:27

cronにbash scriptを登録したあとで、crontabを読み込ませるためのコマンドです。
wkamimur

2021/09/18 05:43

https://wiki.adminsblog.com/Knowledge/Hardware/Synology/CLI このあたりに、色々乗っています。 ただ、もともと気になるのは4時間で止まってしまう件ですね。shellを使えるのであればscreen などをインストールするのが手っ取り早そうですが… .shのログを取ってみるのはどうでしょうか。
glyzinieh

2021/09/19 16:00

ありがとうございます。 ログは取ってみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問