ユーザーのGmailの受信トレイをスキャンしてレポートを提供するプロジェクトに取り組んでいます。次の仕様でherokにデプロイしました。
言語:Python 2.7
フレームワーク:Django 1.8
タスクスケジューラ:Celery(Rabbitmq-bigwigブローカーURL)
これで、herokuがそれを実行したときに、セロリから出力が得られません。 Heroku PushでCollectstatic構成エラーと表示されます。 whitenoise packageを使用してみました
また、実行してみました:heroku run python manage.py collectstatic --dry-run --noinputそれでも同じエラーが発生します。
$ heroku run python manage.py collectstatic --noinputは、エラーの次の詳細を示しました。
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 338, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/Django/core/management/__init__.py", line 303, in execute
settings.INSTALLED_APPS
File "/app/.heroku/python/lib/python2.7/site-packages/Django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/app/.heroku/python/lib/python2.7/site-packages/Django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python2.7/site-packages/Django/conf/__init__.py", line 92, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/app/salesblocker/__init__.py", line 5, in <module>
from .celery import app as celery_app
File "/app/salesblocker/celery.py", line 5, in <module>
from celery import Celery
File "/app/.heroku/python/lib/python2.7/site-packages/celery/__init__.py", line 131, in <module>
from celery import five # noqa
File "/app/.heroku/python/lib/python2.7/site-packages/celery/five.py", line 153, in <module>
from kombu.utils.compat import OrderedDict # noqa
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/utils/__init__.py", line 19, in <module>
from uuid import UUID, uuid4 as _uuid4, _uuid_generate_random
ImportError: cannot import name _uuid_generate_random
また、以前の作業コミットにherokuコミットをロールバックして、そのコードを複製しましたが、次のコミット(変更:メディアフォルダーからメディアイメージを削除)で同じエラーが再び表示されました。
前もって感謝します
この問題 に遭遇しています。これはPython 2.7.11(KelbuはCeleryで必要です)に影響します。
この問題はKombu 3.0.30で修正されています。
Kombuのアップグレードは理想的なオプションですが、これを許可しない古い依存関係に悩まされている場合、これを私のsettings.pyの一番上に置くとうまくいきました:
import uuid
uuid._uuid_generate_random = None
これは_uuid_generate_randomが削除されたために機能します here で、これは単にデフォルト値を復元します。 Kombuはこれを 2007年に解決されたバグの回避策 にのみチェックするため、このハックは妥当と思われます。また、最近のPython=影響なし:)
はい、Alasdairが言及した問題がエラーの原因でした。 このワークフロー に従って必須のrequirements-to-freeze.txtのみを保持することにより、プロジェクトの問題を解決しました。 Celeryをリストしますが、Kombuのような依存関係はリストしません。
次に、重要なパッケージをアップグレードし、動作中のKombuバージョンとの依存関係の完全なリストを再凍結するだけで十分です。
pip install --upgrade -r requirements-to-freeze.txt
pip freeze > requirements.txt
そして、アップグレードが他の何かを壊さないことを確認するためにテストします;)