kdmgs110 / Tweet-Analyser

Flaskでつくれるツイート分析アプリです。
4 stars 0 forks source link

flaskから登録したcrontabのon・offの設定をできるようにしたい #30

Open kdmgs110 opened 6 years ago

kdmgs110 commented 6 years ago
File "/mnt/c/workspace/pydev/tweet-analyser/app.py", line 61, in editQuery
enableCronTab(query, crontab)
File "/mnt/c/workspace/pydev/tweet-analyser/app.py", line 418, in enableCronTab
        cron = CronTab(user=True)
        cron = cron.find_command(query)
        for job in cron:
            if not job.is_enabled():
                job.enable(True)
                cron.write()
                print("[INFO] 以下のJOBを有効化しました:{}".format(job))

def disableCronTab(query, crontab):
    cron = CronTab(user=True)
    cron = cron.find_command(query)
AttributeError: 'generator' object has no attribute 'write'
kdmgs110 commented 6 years ago
def enableCronTab(query, crontab):
    if crontab:
        cron = CronTab(user=True)
        cron = cron.find_command(query)
        for job in cron:
            print("[INFO] 以下のジョブがみつかりました:{}".format(job))
            if not job.is_enabled():
                job.enable()
                print("[INFO] 以下のJOBを有効化しました:{}".format(job))

def disableCronTab(query, crontab):
    cron = CronTab(user=True)
    cron = cron.find_command(query)
    print(cron)
    for job in cron:
        if job.is_enabled():
            print("[INFO] 以下のJOBを無効化します:{}".format(job))
            job.enable(False)
kdmgs110 commented 6 years ago

有効化されない

127.0.0.1 - - [14/Apr/2018 18:26:41] "GET /edit/1 HTTP/1.1" 200 -
isEnabled:on
isEnabled:1
[INFO]キーワードを更新しました
VRChatはじめました
<generator object CronTab.find_command at 0x7f96572635c8>
127.0.0.1 - - [14/Apr/2018 18:26:43] "POST /edit/1 HTTP/1.1" 302 -
127.0.0.1 - - [14/Apr/2018 18:26:43] "GET /index HTTP/1.1" 200 -
127.0.0.1 - - [14/Apr/2018 18:26:48] "GET /edit/1 HTTP/1.1" 200 -
isEnabled:None
isEnabled:0
[INFO]キーワードを更新しました
VRChatはじめました
[INFO] 以下のジョブがみつかりました:# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py VRChatはじめました
[INFO] 以下のJOBを有効化しました:* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py VRChatはじめました
[INFO] 以下のジョブがみつかりました:# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py VRChatはじめました
[INFO] 以下のJOBを有効化しました:* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py VRChatはじめました
127.0.0.1 - - [14/Apr/2018 18:26:50] "POST /edit/1 HTTP/1.1" 302 -
127.0.0.1 - - [14/Apr/2018 18:26:50] "GET /index HTTP/1.1" 200 -
kdmgs110 commented 6 years ago

リファレンス見てると

job = cron.new(command='/foo/bar',comment='SomeID')
job.enable()

でenableにできるっぽいんだけど、すでに存在しているdisabledなjobをみつけてenabledにできない。 今の実装コードはこれ。

def enableCronTab(query, crontab):
    if crontab:
        cron = CronTab(user=True)
        cron = cron.find_command(query)
        for job in cron:
            print("[INFO] 以下のジョブがみつかりました:{}".format(job))
            if not job.is_enabled():
                job.enable()
                print("[INFO] 以下のJOBを有効化しました:{}".format(job))
kdmgs110 commented 6 years ago

もしかしてfind_commandでとってきているのはjobなのか?

kdmgs110 commented 6 years ago

だめですね

def enableCronTab(query, crontab):
    if crontab:
        cron = CronTab(user=True)
        job = cron.find_command(query)
        print("[INFO] 以下のジョブがみつかりました:{}".format(job))
        if not job.is_enabled():
            job.enable()
            cron.write()
            print("[INFO] 以下のJOBを有効化しました:{}".format(job))

failedtoenablecrontab

kdmgs110 commented 6 years ago

実行されているはずなのにうまくいかないぞ。

Ckdmgs110@DESKTOP-4HHEO95:/mnt/c/workspace/pydev/tweet-analyser$ python3 app.py
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 337-201-509
127.0.0.1 - - [17/Apr/2018 21:19:40] "GET /edit/1 HTTP/1.1" 200 -
[INFO]キーワードを更新しました
テックキャンプ
[INFO] CRONの有効化設定が選ばれました。有効化します。
[INFO] 以下のジョブがみつかりました:# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ
[INFO] 以下のJOBを有効化しました:* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ
127.0.0.1 - - [17/Apr/2018 21:19:42] "POST /edit/1 HTTP/1.1" 302 -
127.0.0.1 - - [17/Apr/2018 21:19:42] "GET /index HTTP/1.1" 200 -
127.0.0.1 - - [17/Apr/2018 21:19:52] "GET /edit/1 HTTP/1.1" 200 -
127.0.0.1 - - [17/Apr/2018 21:19:56] "GET /edit/1 HTTP/1.1" 200 -
[INFO]キーワードを更新しました
テックキャンプ
[INFO] CRONの無効化設定が選ばれました。無効化します。
<generator object CronTab.find_command at 0x7f7eb301f938>
[INFO] 以下のJOBを無効化します:# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ
127.0.0.1 - - [17/Apr/2018 21:19:58] "POST /edit/1 HTTP/1.1" 302 -
127.0.0.1 - - [17/Apr/2018 21:19:58] "GET /index HTTP/1.1" 200 -
127.0.0.1 - - [17/Apr/2018 21:20:01] "GET /edit/1 HTTP/1.1" 200 -
[INFO]キーワードを更新しました
テックキャンプ
[INFO] CRONの無効化設定が選ばれました。無効化します。
<generator object CronTab.find_command at 0x7f7eb301f4c0>
[INFO] 以下のJOBを無効化します:# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ
127.0.0.1 - - [17/Apr/2018 21:20:06] "POST /edit/1 HTTP/1.1" 302 -
127.0.0.1 - - [17/Apr/2018 21:20:06] "GET /index HTTP/1.1" 200 -
kdmgs110 commented 6 years ago

ちょっとわからないので、jupyter notebookでやってみる

kdmgs110 commented 6 years ago

できた。

kdmgs110 commented 6 years ago

あとは、キーワードを削除するときにその時のキーワードのjobを一緒に削除したいので、その機能を追加しますんご