我已经在Heroku上添加了Redistogo附加组件,但我无法在控制台模式下进行测试。我已经按照文档完成了此操作。
$ heroku run python --app redis-to-go
Running python attached to terminal... up, run.1
Python 2.7.2 (default, Oct 31 2011, 16:22:04)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> f=open('requirements.txt', 'w')
>>> f.write('redis==2.4.12'+'n' )
>>> f.close()
>>>
>>> f=open('store.py', 'w')
>>> f.write('import os'+'n' )
>>> f.write('import urlparse'+'n' )
>>> f.write('import redis'+'n' )
>>> f.write("url = urlparse.urlparse(os.environ.get('REDISTOGO_URL', 'redis://localhost'))"+'n' )
>>> f.write('redis = redis.Redis(host=url.hostname, port=url.port, db=0, password=url.password)'+'n' )
>>> f.close()
>>>
>>> from store import redis
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "store.py", line 3, in <module>
import redis
ImportError: No module named redis
Heroku的Python找到:os,urlparse,但找不到redis。
有人帮助我吗?我只需要Heroku的Python控制台模式!
使用本地Python和远程REDISTOGO,我没有任何问题!
更新:
从文档中:
部署到 Heroku
要在 Heroku 上使用 Redis To Go,请安装 redistogo 附加组件:
$ heroku addons:add redistogo
从 Heroku 控制台测试它是否正常工作:
$ heroku run python
Python 2.7.2 (default, Oct 31 2011, 16:22:04)
>>> from store import redis
>>> redis.set('answer', 42)
True
>>> redis.get('answer')
'42'
它无法从 Heroku 控制台工作!
请分享您对此的实践。
这些步骤应该在本地完成,提交到 git,然后推送到 heroku。当您执行以下操作时:
heroku run python --app redis-to-go
它会启动应用程序的独立实例。这不是持久的,只存在于该dyno中。如果你想在一个独立的实例中完全测试它,你可以加载虚拟环境,然后:
pip install redis
但是,下次运行应用程序时,这将不可用。相反,您应该签入所有文件然后推送。即使你只是简单地将 redis 添加到你的要求中.txt它也应该在一个孤立的测功机中工作。
根据您的命令,这应该完全有效:
cat "redis==2.4.12" >> requirements.txt
git add requirements.txt
git commit -m 'adding redis'
git push heroku master
heroku addons:add redis-to-go
heroku run python --app redis-to-go
你的 python intrepreter 内部:
import os
import urlparse
import redis
url = urlparse.urlparse(os.environ.get('REDISTOGO_URL', 'redis://localhost'))
redis = redis.Redis(host=url.hostname, port=url.port, db=0, password=url.password)
redis.set('answer', 42)
redis.get('answer')
为什么你们试图用远程控制台做所有事情??在本地执行应用程序(创建 store.py,要求.txt),然后部署它!!Heroku 会在您部署(或推送)应用程序时看到需求.txt并添加必要的库。所以这就是为什么它不起作用的原因,因为 redis 库没有安装在你的 heroku dyno 上。
我不是 python 开发人员,但我这样做没有问题
https://github.com/ismaelga/python-redis-heroku