最近、web2py の最新バージョン (v2.1.1) に更新しましたが、以前のバージョンでもまだこの問題が発生していました。
cron ジョブを実行したい。cron を機能させるための努力の中で、私はこのチュートリアルに従いました。それが機能するのを見るのは本当に簡単です。しかし、これでもうまくいくかどうかわからないので、何か間違ったことをしたに違いありません。
以下は、web2py を起動した後の私の端末です。毎分実行したいモジュールが 3 つあります。最後のモジュールは、前述のチュートリアルからのものです。出力が以下に反映されるように、チュートリアルの logging.conf にも従いました。
2012-10-18 16:50:00,060 - web2py.cron - DEBUG - hard cron invocation
2012-10-18 16:50:00,060 - web2py.cron - DEBUG - WEB2PY CRON: Acquiring lock
2012-10-18 16:50:00,061 - web2py.cron - INFO - WEB2PY CRON (hard): ircmessage executing *applications/ircmessage/modules/get_messages.py in /home/web2py/src/web2py at 2012-10-18 16:50:00.061575
2012-10-18 16:50:00,062 - web2py.cron - INFO - WEB2PY CRON (hard): ircmessage executing **applications/ircmessage/modules/addline.py in /home/web2py/src/web2py at 2012-10-18 16:50:00.062092
2012-10-18 16:50:00,065 - web2py.cron - INFO - WEB2PY CRON (hard): ircmessage executing **applications/ircmessage/modules/background_updater.py in /home/web2py/src/web2py at 2012-10-18 16:50:00.065794
2012-10-18 16:50:00,069 - web2py.cron - DEBUG - WEB2PY CRON: Releasing cron lock
2012-10-18 16:50:00,934 - web2py.cron - DEBUG - WEB2PY CRON Call returned success:
>>>
2012-10-18 16:50:00,938 - web2py.cron - DEBUG - WEB2PY CRON Call returned success:
>>>
2012-10-18 16:50:00,963 - web2py.cron - DEBUG - WEB2PY CRON Call returned success:
これが私のcrontabです:
#crontab
0-59/1 * * * * root *applications/ircmessage/modules/get_messages.py
0-59/1 * * * * root **applications/ircmessage/modules/addline.py
0-59/1 * * * * root **applications/ircmessage/modules/background_updater.py
簡単な addline.py モジュールの概要:
#!/usr/bin/env python
# coding: utf8
from gluon import *
from gluon.debug import dbg
with open("text.txt", "a") as myfile:
myfile.write("appended text")
dbg.set_trace() # stop here! **
** dbg.set_trace を使用したことに注意してください -- このトレースは、管理画面のデバッグ セクションには表示されません。
web2py の新しいバージョンに更新してから、起動時に cron タスクが自動的に実行されないことに気付きました (ただし、これを誤解した可能性があります)。次のように web2py を起動します。
./web2py.py -i xxx.xxx.xx.xx -p 8000 -c /etc/ssl/certs/my_cert_file.crt -k /etc/ssl/certs/my_cert_key.key -a apassword --run-cron
最も単純な cron タスクを機能させる方法についてのアドバイスをいただければ幸いです。また、cron が実際に呼び出されているかどうかをデバッグする方法についてのアドバイスも歓迎します。実際、一般的なアドバイスは非常に有益です。
事前にお時間をいただき、ご提案いただきありがとうございます。