본문 바로가기

개발/Flask, Fastapi

(11)
flask+uwsgi+nginx 로컬에 띄우기 useradd www-data 로 유저를 추가한다. passwd user 로 비밀번호를 설정한다. usermod -a -G www-data www-data (앞에가 그룹, 뒤에가 유저다) www-data 유저와 그룹을 만드는 이유는 www-data 유저와 그룹이 nginx 소켓 파일을 소유하기 때문이다. chmod -R 777 [디렉토리] 로 작업 폴더의 권한을 그룹 유저와 다른 유저에게도 디렉토리 안의 파일에 읽기, 쓰기, 실행 권한까지 준다. nginx conf 파일을 수정해준다. server { location / { include uwsgi_params; } location /hello { include uwsgi_params; } } 같이 사이트의 하위 주소를 명기한다. 다음은 Flask, uW..
Fastapi heroku 배포하기 2021.6.10일 기준 heroku에서 공식 지원되는 파이썬 버전은 다음과 같다. https://devcenter.heroku.com/articles/python-support#specifying-a-python-version Heroku Python Support | Heroku Dev Center Last updated May 28, 2021 Heroku supports all popular web frameworks for Python (Django, Flask, Pyramid, and so on). For a deployment tutorial that uses a sample Django app, see Getting Started on Heroku with Python. Recognizing..
heroku 로딩 속도 느린 현상 해결하기(non sleep) 헤로쿠로 무료 배포를 하면, 30분 이상 트래픽이 없을 시 헤로쿠가 앱을 sleep 시킨다. 그러면 차후 접속할 때, 다시 앱을 깨우느랴 로딩 속도가 20초 이상 걸린다. 어떻게 해결할 수 있을까 찾아봤는데, http://kaffeine.herokuapp.com/ Kaffeine Remove your app from Kaffeine. http:// .herokuapp.com Decaf App not found Your app has been removed. kaffeine.herokuapp.com 이 사이트에 헤로쿠 도메인을 넣으면 30분마다 트래픽을 발생시켜, 앱이 sleep 되지 않도록 한다. 여기다 이렇게 도메인을 넣으면 된다. 기본적으로 하루에 6시간은 sleep을 해야 해서, 그 시간대를 지정해..
flask-mongoengine으로 추가한 데이터가 Mongodb에서 보이지 않을 때 내가 해결한 방법 : api로 받아온 json 파일의 스펠링을 1)스키마와 2)몽고디비에 추가하는 함수에 들어갈 변수와 일치시켜야 한다. 몽고디비를 사용한 이유가 json 파일 자체를 간편하게 추가할 수 있다는 장점 때문이었는데, ORM 방식으로 몽고디비를 사용하기 위해서는 결국 노가다로 변수를 넣어주어야 했다... 내가 사용한 데이터는 restAPI 사이트에서 키를 발급받아 받아온 IMDb 데이터로, json 파일에 key가 대문자로 들어있었다. # 주의 : 무조건 소문자가 아니라 json 파일과 일치하도록 key값의 대소문자를 넣어야 합니다. class Movie(db.Document): title = db.StringField() year = db.IntField() rated = db.String..
mongoengine NotUniqueError raise NotUniqueError(message % err) mongoengine.errors.NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error collection: frated.movie index: imdbid_1 dup key: { imdbid: null }, full error: {'index': 0, 'code': 11000, 'keyPattern': {'imdbid': 1}, 'keyValue': {'imdbid': None}, 'errmsg': 'E11000 duplicate key error collection: frated.movie index: imdbid_1 dup key: { imdbid..
Flask 로 MongoDB Atlas 데이터베이스와 연동하기 from flask import Flask from flask_mongoengine import MongoEngine app = Flask(__name__) DB_URI = "mongodb+srv://[useid]:[password]@[host]/[database]?retryWrites=true&w=majority" app.config["MONGODB_HOST"] = DB_URI db = MongoEngine(app) if __name__ == '__main__': app.run() 이대로 하면 된다. 이러고 python 파일이름.py 하면 연결된다!
mongodump 없이 Mongocb Collection 백업하고 복사하기 먼저 MongoDB Compass 가 설치되어 있어야 한다. 한참 찾아보며 삽질했는데 너무나 간단하게 할 수 있었다.... MongoDB Compass 에 데이터베이스를 연결 후, 내보낼 Collection을 클릭하고 상단의 Collection-Export Collection을 누른다. Export Full Collection을 누르고 Select Fields를 해준다 이렇게 원하는 Field만 골라서 할 수 있다 디폴트는 전체 Field가 선택된다. SELECT OUTPUT 클릭. JSON, CSV 형태를 골라 어디다가 저장할건지 물어본다. 파일 이름도 지정할 수 있다. 하고나서 EXPORT 클릭 내보낸 데이터 다른 콜렉션에 넣기 데이터베이스 옆의 + 버튼을 눌러 새 콜렉션을 만들어준다. 해당 콜렉션 ..
flask-mongoalchemy vs mongoengine MongoDB 데이터베이스 기반으로 flask app을 만드는데 필요한 라이브러리로 pymongo, MongoAlchemy, MongoEngine을 많이 쓰는 것 같다. 뭔 차이야? 하고 궁금해서 찾아보니 MongoAlchemy는 SQLAlchemy의 비슷한 버전으로 나온 ORM-like layer이다. PyMongo 위에서 작동한다. MongoAlchemy 튜토리얼이 flask-alchemy를 배운 나한테 익숙해서 사용해볼까 싶었는데, ModuleNotFoundError: No module named 'flask.ext' 에러가 나서 찾아보니 깃헙 코드 업데이트가 4년 전에서 멈춰있다. 흠... 패스. 다음은 MongoEngine이다. Pymongo의 위에서 ORM-like-layer로 작동하는 건 똑..