今天來介紹 Pyramid 專案做到 Serverless ,有幾個步驟,第一需要把 breaker 記錄 session 的功能改成使用 Redis 來記錄 session,這樣才不會在附載平衡的時候,有 session 不同步的問題,之前在部署的時候因為沒有注意到 Session 問題,導致有一些問體產生,比如說一下有登入,一下又被登出,就是因為 session 不同步的問題.再來是 Sqlite DB 改成 Postgresql DB,讓 DB 自己一個 VM,或是使用 Google PostgreSQL DB 的服務.
安裝 pyramid_redis_sessions
source env/bin/activate
pip install pyramid_redis_sessions
or
修改 setup.py 的 requires 加入 pyramid_redis_sessions
...
requires = [
'pyramid',
'pyramid_jinja2',
'pyramid_debugtoolbar',
'pyramid_tm',
'pyramid_redis_sessions',
'SQLAlchemy',
'transaction',
'zope.sqlalchemy',
'waitress',
]
...
安裝 pyramid_redis_sessions
source env/bin/activate
python setup.py develop
設定 redis 連線資訊 在 ini 設定檔
設定 development.ini
...
# redis
redis.sessions.secret = b'{])o/\xe5\x17\xf5\xef]\xce\x90\xea2\x99i\x8c/\xd1\x1a\xe9'
redis.sessions.timeout = 21600
redis.sessions.cookie_name = session
redis.sessions.cookie_max_age = 21600
redis.sessions.host = 127.0.0.1
redis.sessions.port = 6379
redis.sessions.charset = utf-8
...
設定 production.ini
...
# redis
redis.sessions.secret = b'{])o/\xe5\x17\xf5\xef]\xce\x90\xea2\x99i\x8c/\xd1\x1a\xe9'
redis.sessions.timeout = 21600
redis.sessions.cookie_name = session
redis.sessions.cookie_max_age = 21600
redis.sessions.host = 127.0.0.1
redis.sessions.port = 6379
redis.sessions.charset = utf-8
...
設定 ini
development.ini
...
修改 sqlalchemy.url = sqlite:///%(here)s/ithome_pellok_2018.sqlite
改成 sqlalchemy.url = postgresql+psycopg2://postgres:password@localhost/job178website
...
development.ini
...
修改 sqlalchemy.url = sqlite:///%(here)s/ithome_pellok_2018.sqlite
改成 sqlalchemy.url = postgresql+psycopg2:///job178website
...
我們把專案無狀態化之後就可以橫向擴張專案,當效能有遇到問題的時候只要多開幾台服務,就可以解決XD.
pyramid_redis_sessions
pyramid web application
"記錄 session 的功能改成使用 Reids 來記錄 session"
我想應該是 "Redis"
感謝提醒,已修正謝謝