하위 프로세스를 호출하는 python 스크립트를 실행하고 있습니다. 시간이 초과되면 즉시 하위 프로세스 (이 경우 BCP 호출)가 완료되는 것을 볼 수 있습니다. 실제로, 나는 그것이 데이터베이스에서 완전하다는 것을 알 수있다. 또한 BCP 명령을 명령 줄에서 직접 실행할 수 있으며 정상적으로 작동합니다.파이썬에서 BCP를 호출하면 시간 초과 예외가 발생하고 즉시 완료됩니다.
여기 내 파이썬 스크립트는 명령 프롬프트로 뱉어 무엇 : 당신이 볼 수 있듯이
C:\FaceIAPS\StudyDataFiles> py .\RUN_DATA.py
Synchronizing 80 subjects
Subject 11
Starting copy...
Traceback (most recent call last):
File ".\RUN_DATA.py", line 261, in <module>
bulk_import(upload_file, 'Facet_Data')
File ".\RUN_DATA.py", line 171, in bulk_import
subprocess.check_call("bcp BehaviorResearch.." + table_to_upload_to + " in " + filename_to_be_uploaded + " -T -c -S
PBB-C202B-2\BEHAVIORRESEARCH -e bulk_copy_errors.log", shell=True, timeout=5)
File "C:\Python34\lib\subprocess.py", line 554, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Python34\lib\subprocess.py", line 537, in call
return p.wait(timeout=timeout)
File "C:\Python34\lib\subprocess.py", line 1157, in wait
raise TimeoutExpired(self.args, timeout)
subprocess.TimeoutExpired: Command 'bcp BehaviorResearch..Facet_Data in _temp_ -T -c -S PBB-C202B-2\BEHAVIORRESEARCH -e
bulk_copy_errors.log' timed out after 5 seconds
1000 rows sent to SQL Server. Total sent: 1000
1000 rows sent to SQL Server. Total sent: 2000
PS C:\FaceIAPS\StudyDataFiles> 1000 rows sent to SQL Server. Total sent: 3000
1000 rows sent to SQL Server. Total sent: 4000
1000 rows sent to SQL Server. Total sent: 5000
1000 rows sent to SQL Server. Total sent: 6000
1000 rows sent to SQL Server. Total sent: 7000
1000 rows sent to SQL Server. Total sent: 8000
1000 rows sent to SQL Server. Total sent: 9000
1000 rows sent to SQL Server. Total sent: 10000
1000 rows sent to SQL Server. Total sent: 11000
1000 rows sent to SQL Server. Total sent: 12000
1000 rows sent to SQL Server. Total sent: 13000
1000 rows sent to SQL Server. Total sent: 14000
1000 rows sent to SQL Server. Total sent: 15000
1000 rows sent to SQL Server. Total sent: 16000
16102 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 5164 Average : (3118.13 rows per sec.)
는, 명령 프롬프트는 BCP 호출의 출력을 분할하고있다.
어떻게 될까요? 어떻게 수정합니까?
편집 : 나는 그것이
변경에 서브 프로세스 호출 고정 방법 "에서"참고 미숙에 대한로서
arguments = ["bcp", "BehaviorResearch.." + table_to_upload_to, "in", filename_to_be_uploaded, "-T", "-c", "-S PBB-C202B-2\BEHAVIORRESEARCH", "-e bulk_copy_errors.log"]
subprocess.call(arguments, timeout=30)
그것을 자신의 주장이다입니다. subprocess.check_call()
say에 대한
질문하는 것이 정확히 무엇입니까? – AHuman