django - 无法在 Heroku 上导入芹菜
问题描述
当我运行“heroku local”时,我可以看到 celery 任务正在窗口中运行。但是,当我尝试将代码部署到 Heroku 时,我不断收到无法找到模块“celery”的错误消息。此外,我以应避免命名冲突的方式命名我的文件。
项目结构
invmvp
--__init.py__
--celeryapp.py
--settings.py
--urls.py
--wsgi.py
档案
worker: celery worker -A invmvp --app=invmvp.celeryapp:app
点文件
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
[packages]
celery = "*"
django = "*"
gunicorn = "*"
django-heroku = "*"
requests = "*"
yahoo-finance = "*"
whitenoise = "*"
npm = "*"
[requires]
python_version = "3.6"
__init__.py
from __future__ import absolute_import, unicode_literals
__all__ = ('celery_app')
芹菜应用程序.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'invmvp.settings')
app = Celery('invmvp')
app.conf.update(BROKER_URL=os.environ["REDIS_URL"],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
当我尝试推送到heroku时输出
Counting objects: 88, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (83/83), done.
Writing objects: 100% (88/88), 14.26 KiB | 3.56 MiB/s, done.
Total 88 (delta 53), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: Skipping installation, as Pipfile.lock hasn't changed since last deploy.
remote: -----> $ python manage.py collectstatic --noinput
remote: Traceback (most recent call last):
remote: File "manage.py", line 15, in <module>
remote: execute_from_command_line(sys.argv)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
remote: utility.execute()
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 317, in execute
remote: settings.INSTALLED_APPS
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
remote: self._setup(name)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 43, in _setup
remote: self._wrapped = Settings(settings_module)
remote: File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 106, in __init__
remote: mod = importlib.import_module(self.SETTINGS_MODULE)
remote: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
remote: return _bootstrap._gcd_import(name[level:], package, level)
remote: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
remote: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
remote: File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
remote: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
remote: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
remote: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
remote: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
remote: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
remote: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
remote: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
remote: File "/tmp/build_9ccdb12ad149602e24a09bf3bf297f98/invmvp/__init__.py", line 10, in <module>
remote: import celery
remote: ModuleNotFoundError: No module named 'celery'
remote:
remote: ! Error while running '$ python manage.py collectstatic --noinput'.
remote: See traceback above for details.
remote:
remote: You may need to update application code to resolve this error.
remote: Or, you can disable collectstatic for this application:
remote:
remote: $ heroku config:set DISABLE_COLLECTSTATIC=1
remote:
remote: https://devcenter.heroku.com/articles/django-assets
remote: ! Push rejected, failed to compile Python app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to staging-invmvp.
remote:
To https://git.heroku.com/staging-invmvp.git
! [remote rejected] celery -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/staging-invmvp.git'
解决方案
我尝试重新安装芹菜并解决了这个问题。
pipenv install celery
推荐阅读
- python - 如何从内存分配发生在C层的python脚本将float *数组传递给C方法
- javascript - JavaScript 对象数组中的增量 ID
- sql - 没有这样的功能:SQLITE 中的 iif
- python - 如何在 Python 中平均聚合 Dataframe 的值?
- python - 使用 python 进行弹性搜索批量更新,如何在数组字段中追加新数据
- node.js - 如何在我的 nodejs 代码中实现 maven 依赖项?
- reactjs - 在 Reactjs 中编辑 Png 文件文本
- django - ValueError:字段 'id' 需要一个数字,但得到了 'DEFAULT VALUE'
- oauth-2.0 - 用于交换 ID 令牌的 Openid Connect 标准方式
- python - 制作 tfrecord 文件时如何解决错误?