728x90

브리즈번은 호주의 5대 도시중 하나로 시드니,멜버른 다음으로 큰 도시입니다.

제가 살던 선샤인코스트에서 차로 1시간정도 떨어진 곳에 있는 도시이며 퀸즐랜드 주의 대표 도시입니다.



위 사진은 브리즈번 강에 있는 공원에서 시티를 찍은 사진입니다.

전 포스트에서 말했듯이 일년 중 대부분의 날씨가 사진처럼 맑습니다.

저 공원을 걷다보면 인공해변이 있어서 일광욕과 자연을 좋아하는 호주사람들이 도심에서도 일광욕을 즐길 수 있습니다.




브리즈번 시티에는 1개의 카지노가 있는데, 규모가 다른 카지노처럼 크지는 않지만 처음 카지노를 접하는 사람들에겐 오히려 사람도 적고 복잡하지 않아서 좋은 것 같습니다. ​



위 사진이 카지노 겉모습 입니다.
저기가면 그냥 돌림판에 써있는 배수를 찍고 그 배수에 정지하면 배팅금액*배수의 돈을 받는 간단한 게임이 있는데 그 게임으로 쏠쏠한 재미를 본 기억이 있네요.

마지막으로 브리즈번 씨티의 야경 사진으로 포스팅을 마무리 하겠습니다​

728x90

​​호주 선샤인 코스트(Sunshine Coast)

간단하게 2016년 일년동안 살았던 호주의 선샤인코스트에 대해 포스팅을 해보려고 합니다.

선샤인코스트라는 도시 이름은 생소할 수도 있지만 요즘들어 호주에서 은퇴 후 노년기를 보내러 많이들 모이고, 겨울에 추운 남쪽지방에서 휴가를 보내기 위해 많이 놀러오는 곳입니다.

호주의 5대 도시 브리즈번에서 차로 약 1시간 떨어진 북쪽에 위치하고 있으며 인구는 30만명 정도의 소도시 입니다.​


빨간색 마크가 찍혀있는 곳이 선샤인 코스트 입니다.

선샤인 코스트는 아래 사진처럼 해변이 길게 뻗어있고, 도시 이름마냥 여름에는 엄청난 햇빛이 내리쬐고 호주위에는 오존층이 매우 작아서 한국보다 자외선 쌔기가 몇배라고 합니다.
처음 바닷가를 가서 30분만에 어깨가 화상입어 고통스러웠던 기억이 나네요...



위에서 언급했다시피 노인분들이 최근 많이 몰리는 도시기 때문에 요양원, 큰병원들이 들어서고있고 university of the sunshine coast의 간호학과에서 졸업을하면 영주권을 따는데 가산점이 붙어서 많은 한국학생들이 몰리고 있는 지역중에 하나입니다. 또한 TAFE이라는 호주의 기술대학이 있는데 그 곳 또한 요리사자격증으로 영주권을 따기위해 오는 분들이 많이 있습니다.


이 사진은 브리즈번에서 선샤인코스트로 가는 고속도로에서 찍은 사진인데 1년중 300일은 저렇게 맑은 날씨를 보이는거 같습니다.

제가 어학연수를 선샤인코스트로 선택한 큰 이유중 하나가 원어민 비율이 높다는 점인데요 선샤인 코스트가 호주 도시중 백인비율이 가장 높은 곳이라고 합니다.
제가 갈때까지만 해도 한국인을 보기 어렵다고 하고, 도착 했을때 한국인을 길에서 보기가 쉽진 않았는데 한국에 돌아오기 전에는 확실히 1년전보다 한국인 비중에 늘었던거 같습니다.

마지막으로 쇼핑센터에서 해질녘에 찍은 ​사진을 올리고 포스팅을 마치겠습니다!



728x90

fastapi에는 spring의 Interceptor와 같이 api호출 후 전/후처리를 할 수 있는 기능이 있습니다.

middleware를 적용하면 되는데

 

먼저 middleware/middleware.py를 생성해줍니다

from fastapi import Request
from chatterbot.utils import get_logger
import time

logger = get_logger(__name__)


class Middleware:
    def __init__(
            self,
            some_attribute: str,
    ):
        self.some_attribute = some_attribute

    async def __call__(self, request: Request, call_next):
        logger.debug("")
        logger.debug(" ******************** start ******************** ")
        logger.debug(" ***** request path : {} ".format(request.url.path))

        start_time = time.time()
        response = await call_next(request)
        process_time = time.time() - start_time
        response.headers["X-Process-Time"] = str(process_time)

        logger.debug(" ***** process_time : {} ".format(process_time))
        logger.debug(" ******************** end ******************** ")
        logger.debug("")

        return response

소스코드를 보시면 __call__함수가 있고, 그 안에서 
1. start_time 찍기
2. call_nest(request)호출
3. process_time찍기
순으로 실행을 하는데 이 과정을거쳐서 호출된 요청의 process_time을 찍을 수 있습니다.

 

await call_nest(reques)로 사용자가 요청하기 전에 전처리를 하고
응답값을 받아온 후에 후처리를 로직을 넣어서 구서을 하시면 됩니다.

 

 

이렇게 작성한 middleware를 router에 add해야하는데
main.py 소스에 아래부분을 추가하면 됩니다.

 

from middleware.middleware import Middleware
from starlette.middleware.base import BaseHTTPMiddleware

app = FastAPI()

middleware = Middleware(some_attribute="some_attribute_here_if_needed")
app.add_middleware(BaseHTTPMiddleware, dispatch=middleware)
728x90

파이썬으로 개발을 하다보면 pip를 이용해서 여러가지 모듈을 설치해서 사용을 하게 됩니다.

 

보통 개발을 하면서 필요한 모듈이 있으면 아래와 같은식으로 다운을 받은뒤
import를 해서 사용을 합니다.

 

pip install fastapi

 

하지만 한두개일때는 상관이 없지만 개발을 하다보면 20~30개의 모듈이 필요로 할 수 있기때문에

보통 requirements.txt파일을 이용해서 관리를 하는데 다운받을때마다 매번 추가를 해줄수 없기때문에

freeze를 사용해서 requirements.txt파일을 생성합니다.

 

 

가상환경에 설치된 리스트나 가상환경을 사용 안한다면 현재 사용중인 파이썬 버전에 설치된 리스트를
아래 명령어를 사용해서 txt파일을 생성 할 수 있습니다. 

 

pip freeze > requirements.txt

 

그리고 다른곳에서 해당 프로젝트를 실행하기 위해선 requirements.txt파일 들어있는 모듈들을 설치해야하는데
일일히 pip install A, pip install B이런식으로 설치를 각각 해줄수 있지만 20~30개 모듈을 하나하나 설치하는것 또한 쉽지 않기 때문에
아래 명령어를 통해 한번에 쭉 설치를 할 수 있습니다.

 

pip install -r requirementx.txt

 

+ Recent posts