내 응용 프로그램은 사용자로부터 하나 이상의 URL (일반적으로 3-4 개의 URL)을 수신하고 해당 URL에서 특정 데이터를 긁어내어 해당 데이터를 데이터베이스에 씁니다. 그러나, 그 데이터를 근근이 살아가는 데는 조금 시간이 걸리기 때문에, 각 스크래핑을 별도의 스레드에서 실행하여 데이터베이스에 대한 스크래핑 + 쓰기가 백그라운드에서 계속 진행될 수 있도록하여 사용자가 계속 사용할 필요가 없도록했습니다. 기다리는. 라인 new_movie
인쇄 올바른 폐기 데이터를 수행하는 동안 피라미드 : 다중 스레드 데이터베이스 작업
@view_config(route_name="add_movie", renderer="templates/add_movie.jinja2")
def add_movie(request):
post_data = request.POST
if "movies" in post_data:
movies = post_data["movies"].split(os.linesep)
for movie_id in movies:
movie_thread = Thread(target=store_movie_details, args=(movie_id,))
movie_thread.start()
return {}
def store_movie_details(movie_id):
movie_details = scrape_data(movie_id)
new_movie = Movie(**movie_details) # Movie is my model.
print new_movie # Works fine.
print DBSession.add(movies(**movie_details)) # Returns None.
이
DBSession.add()
이 작동하지 않습니다
가를 구현하기 위해, 나는 (관련 부분 만)이있다. 사실만 반환합니다.
스레드를 제거하고 store_movie_details()
메서드를 호출하면 올바르게 작동합니다.
무슨 일 이니?
완벽하게 작동했습니다. 고마워요! – tripatheea