0
내 스크립트입니다 :stdin 스크립트를 "라이브"테스트 할 수 있습니까? 일반적으로 프로그램이 백그라운드에서 상호 작용합니까? 다음과 같이
import os
import sys
import time
import MySQLdb
if __name__=="__main__":
dbcon = MySQLdb.connect(host="host", port=3306, user="user", passwd="passwd", db="db")
dbcur = dbcon.cursor()
deliveryCount = 0
bounceBadMailbox = 0
bounceInactiveAccount = 0
bouncePolicyRelated = 0
bounceSpamRelated = 0
bounceQuotaIssues =0
while True:
#type, timeLogged,timeQueued,orig,rcpt,orcpt,dsnAction,dsnStatus,dsnDiag,dsnMta,bounceCat,srcType,srcMta,dlvType,dlvSourceIp,dlvDestinationIp,dlvEsmtpAvailable,dlvSize,vmta,jobId,envId,queue,vmtaPool
line = sys.stdin.readline()
fwrite = open("debug.log","w")
fwrite.write("in true loop")
logList = line.split(',')
bounceType = logList[0]
bounceCategory = logList[10]
emailAddress = logList[4]
jobId = logList[19]
if bounceType == 'd':
deliveryCount += 1
dbcur.execute('UPDATE campaign_stat_delivered SET pmta_delivered = pmta_delivered + %d WHERE id = %d', (deliveryCount,jobId))
dbcon.commit()
elif bounceType == 'b':
if bounceCategory == 'bad-mailbox':
bounceBadMailbox +=1
dbcur.execute('UPDATE list_users SET status = %s, modified_date=NOW() WHERE email=%s', ('b',emailAddress))
dbcur.execute('UPDATE campaign_stat_delivered SET bad_mailbox = bad_mailbox + %d WHERE id = %d', (bounceBadMailbox,jobId))
dbcon.commit()
elif bounceCategory =='inactive-account':
bounceInactiveAccount +=1
dbcur.execute('UPDATE list_users SET status = %s, modified_date=NOW() WHERE email=%s', ('i',emailAddress))
dbcur.execute('UPDATE campaign_stat_delivered SET inactive_account = inactive_account + %d WHERE id = %d', (bounceInactiveAccount,jobId))
dbcon.commit()
elif bounceCategory =='policy-related':
bounceInactiveAccount +=1
dbcur.execute('UPDATE list_users SET status = %s, modified_date=NOW() WHERE email=%s', ('p',emailAddress))
dbcur.execute('UPDATE campaign_stat_delivered SET policy_related = policy_related + %d WHERE id = %d', (bouncePolicyRelated,jobId))
dbcon.commit()
elif bounceCategory =='spam-related':
bounceInactiveAccount +=1
dbcur.execute('UPDATE list_users SET status = %s, modified_date=NOW() WHERE email=%s', ('s',emailAddress))
dbcur.execute('UPDATE campaign_stat_delivered SET spam_related = spam_related + %d WHERE id = %d', (bounceSpamRelated,jobId))
dbcon.commit()
elif bounceCategory =='quota-issues':
bounceInactiveAccount +=1
dbcur.execute('UPDATE list_users SET status = %s, modified_date=NOW() WHERE email=%s', ('q',emailAddress))
dbcur.execute('UPDATE campaign_stat_delivered SET quota_issues = quota_issues + %d WHERE id = %d', (bounceQuotaIssues,jobId))
dbcon.commit()
fwrite = open("debug2.log","w")
fwrite.write("out of true loop")
dbcon.close()
나는 어떠한 결과를받지 못했습니다, 그리고 그것이 내가 스크립트를 수정해야하기 때문에, 표준 입력에 공급 내 프로그램을 다시 시작, 나에게 디버깅 정말 시간이 오래 복용 , 그리고 내 코드 줄을 시도해보십시오.
python mystdinscript.py
볼 실제 결과 :
내가 할 수있는 방법이 있나요? ... 즉 활발히 실행되는 stdin 스크립트로 피드 할 수있는 파이썬 스크립트를 만들려면 어떻게해야합니까?
제가 현재 서있는 것처럼이 프로그램에이 프로그램이 포함되어 있으며 결과가 표시되지 않습니다. 따라서 디버그하기가 매우 어렵습니다.
리눅스에서는 'tee' 유틸리티와 같은 것을 사용하여 통신을 관찰 할 수 있습니다. – sje397