Heroku がホストする Web サイトで cron ジョブを実行しようとしています。Django バックエンドを使用しています。ローカルで動作するカスタムの manage.py コマンドを作成しました (status_crawl.py)。これを修正する方法に関するいくつかのガイドと投稿を見てきましたが、提案は機能しませんでした ( Heroku での Django カスタム manage.py タスクの実行 - インポートの問題とこのガイドなど)。
さらに奇妙なのは、他のコマンドを認識していることです。(そして、django-extensions フレームワークの runscript を使用して、基本的なタスクを機能させることができました)。それはまだ私を悩ませています。
私の基本的なファイル構造は次のようになります。
likes:
...
management:
__init__.py
commands:
__init__.py
status_crawl.py
トレースバックは次のとおりです。
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named commands.status_crawl
もう1つの奇妙な点は、「heroku run python manage.py help」を実行すると、コマンドがオプションとして表示されることです。manage.py コマンドを使用して自分でスクリプトを実行しようとすると、実行されません。
ありがとう!