3

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 コンソールからは機能しません。

これについてあなたの実践を共有してください。

4

2 に答える 2

3

手順はローカルで実行し、git にコミットしてから、heroku にプッシュする必要があります。あなたがするとき:

heroku run python --app redis-to-go

アプリケーションの分離されたインスタンスを起動します。これは永続的ではなく、その dyno 内にのみ存在します。分離されたインスタンスで完全にテストしたい場合は、virtualenv をロードできます。

pip install redis

ただし、これは次回アプリケーションを実行するときには使用できません。代わりに、すべてのファイルをチェックインしてからプッシュする必要があります。redis を requirements.txt に追加しただけでも、分離された dyno で動作するはずです。

コマンドに基づいて、これは完全に機能するはずです:

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 インタープリターの内部:

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')
于 2012-05-16T06:28:45.160 に答える
0

なぜリモートコンソールですべてを作ろうとするのですか?? アプリをローカルで実行し (store.py、requirements.txt を作成)、デプロイします!! アプリをデプロイ (またはプッシュ) すると、Heroku は requirements.txt を確認し、必要なライブラリを追加します。redisライブラリがheroku dynoにインストールされていないため、それが機能しなかった理由です。

私はPython開発者ではありませんが、問題なくこれを実行しました

https://github.com/ismaelga/python-redis-heroku

于 2012-05-15T23:51:51.087 に答える