홈>
데이터베이스를 반복하면서 모든
Company
를 업데이트하고 있습니다.
개체.
for company in Company.objects.filter(updated=False):
driver.get(company.company_url)
company.adress = driver.find_element_by_id("address").text
company.visited = True
company.save()
내 문제는 너무 오래 걸리므로 동일한 코드의 다른 인스턴스를 실행하고 싶지만 실제 DB 읽기가 발생할 때 궁금합니다. 만약
company.visited
True
로 변경
이 루프가 실행되는 동안 여전히이 루프를 방문합니까?
visited
에 대한 두 번째 검사를 추가하면 어떻게됩니까
? 첫 번째 인스턴스가 두 번째 인스턴스의 작업을 인식하지 않으면 두 번째 루프를 시작하고 싶지 않습니다.
for company in Company.objects.filter(updated=False):
if company.visited:
continue
driver.get(company.company_url)
company.adress = driver.find_element_by_id("address").text
company.visited = True
company.save()
- 답변 # 1
관련 자료
- django - values () 쿼리 셋에서 is_null 확인
- python - Django 22 쿼리 셋을 통한 ManyToMany
- python - Django queryset to primary key로 중첩 된 JSON 객체
- Django - 장고 - 원시 sql 쿼리 또는 django queryset orm
- 장고 쿼리 셋 최고 값인지 확인
- python - 장고, JSON 직렬화 쿼리 집합 및 모델 목록의 동작이 다릅니다
- python - django queryset - 월간 평균 계산
- python - Django 쿼리 세트 필터로 viewspy를 작성하여 django에서 두 개의 다른 테이블의 특정 값을 비교하는 방법은 무엇입니까?
- django updateview에 Queryset 추가
- 주석이 달린 Django 쿼리 셋 결과에서 필드 값 목록을 만들려면 어떻게해야합니까?
- 장고 QuerySet 값 ()는 ForeignKey 필드를 포함
- python - 장고 - 쿼리 셋 변환
- django - 목록과 쿼리 세트를 결합하고 둘 다 페이지 매김하고 템플릿에서 반복하는 방법은 무엇입니까?
- 외래 키 조회에서 장고 필터링 된 쿼리 셋
- postgresql - 정수에 대해 장고 쿼리 세트를 필터링하는 방법 (DecimalField)
- Django - 장고 - queryset 객체에 고유 값을 저장하는 방법은 무엇입니까?
- django inline_formset에서 외래 키 필드에 대한 쿼리 세트를 제공하는 방법은 무엇입니까?
- Django - 장고 - 내 쿼리 셋에서 검색 할 다른 필드를 추가하는 방법
- python 3.x - 장고 템플릿에서 쿼리 세트를 렌더링하는 방법은 무엇입니까?
- django - queryset 객체에 수동 queryset 추가
Company.objects.filter(updated=False)
일반적인 SQL 쿼리로 번역합니다 :Company
를 통해 반복을 시작할 때 실행됩니다. 사물. 한 번만 실행됩니다. 두 번째 서버는 첫 번째 서버의 작업을 인식하지 못합니다. 두 서버 모두 동일한Company
를 거치기 때문입니다. 개체. 원자 트랜잭션과select_for_update()
를 사용하여 경쟁 조건을 피하기 위해 행을 잠그십시오. :여러 서버에서이 코드를 실행할 수 있습니다. 각
이 코드를 정기적으로 실행해야하는 경우 Celery를 사용하는 것이 좋습니다. 각 회사별로 작업을 전달하고 여러 작업자가 동시에 작업을 수행하도록합니다. <시간>Company
한 번만 처리됩니다.수정 : 아, 질문에 sqlite 태그를 달았습니다. SQLite는 동시성이 좋지 않기 때문에 PostgreSQL로 전환하는 것이 좋습니다. 제 답변은 SQlite와 함께 작동하지만 잠금으로 인해 데이터베이스 속도가 느려질 수 있습니다.