我尝试使用以下Procfile命令在Heroku上部署python Web应用程序:
web: gunicorn service:app --log-file=- --workers 1 --threads 4
这会产生以下错误:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 139, in load_class
mod = import_module('.'.join(components))
File "/app/.heroku/python/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/gthread.py", line 37, in <module>
""")
RuntimeError:
You need 'concurrent' installed to use this worker with this python version.
由于我们无法控制Heroku上的gunicorn安装,如何解决此依赖性问题?
奇怪的是,Heroku没有提到their docs中的枪炮线,只有工人。这有关系吗?
答案 0 :(得分:9)
将这些行添加到您的requirements.txt:
futures==2.1.6
trollius==1.0.1
将这些更改推送到您的heroku实例后,您将能够使用线程运行gunicorn。
concurrent 是一个python 3.2软件包,并作为 future 软件包向后移植到python 2.7。您应该至少使用python 3.2作为运行时,或者应该将反向移植的包添加到项目要求中。