python 新手请教一个应该很简单的小功能 - V2EX
首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
问与答
python 新手请教一个应该很简单的小功能
RandomUser
2016-12-29 10:24:05 +08:00
1924 次点击
这是一个创建于 3209 天前的主题,其中的信息可能已经有所发展或是发生改变。
想写一个脚本实时监控秒杀列表中指定商品的库存,并发邮件提醒
目前有两个问题:
1. 程序使用最下方注释掉的代码,这样每个商品都要重复写几行语句,能正常运行,但是在有多个商品符合条件时发送邮件后提示“ connection unexpectedly closed ”,好像是 smtp 的问题?
2. 把那几条语句封装一下,即现在用的 check 函数,但是后台只看到 goodName1 在运行, goodName2 根本没执行?
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
import requests, re, json, threading
from threading import Timer
import time
import sys, os
reload(sys)
sys.setdefaultencoding('utf8')
def send_mail(to_list, sub, content):
...
class Buy(object):
stockNum = 0
totalStockNum = 0
def __init__(self, name):
self.goodsName = name
def check_stock(self):
r1 = requests.get()
listNum = len(r1.json()["data"]["list"])
for i in range(1, listNum, 1):
goodName = r1.json()["data"]["list"][i - 1]["goodsName"]
if self.goodsName in goodName:
stock = r1.json()["data"]["list"][i - 1]["stockNum"] #获取当前可售库存
total = r1.json()["data"]["list"][i - 1]["totalStockNum"] #获取当前总库存
add = total - self.totalStockNum #计算本次新增库存
if stock <> 0 and stock > self.stockNum:
send_mail(mailto_list, goodName + str(stock), str(add))
print "send success"
self.stockNum = stock
self.totalStockNum = total
def check(goodName):
p1 = Buy(goodName)
while True:
timer1 = threading.Timer(5, Buy.check_stock, (p1,))
timer1.start()
timer1.join()
if __name__ == '__main__':
check("goodName1")
check("goodName2")
# p1 = Buy("goodName1")
# p2 = Buy("goodName2")
# while True:
# timer1 = threading.Timer(5, Buy.check_stock, (p1,))
# timer2 = threading.Timer(5, Buy.check_stock, (p2,))
# timer1.start()
# timer2.start()
stock
import
threading
JSON
3 条回复
2016-12-29 12:56:55 +08:00
1
jotsai
2016-12-29 12:25:51 +08:00
第 1 个线程启动之后就 join 了,这时候会等第 1 个线程执行完才会接着启动第 2 个线程。
你需要先将两个线程都启动之后,再对两个线程 join 。
2
RandomUser
OP
2016-12-29 12:52:30 +08:00
@
jotsai
意思是我还是得像注释里的代码一样每个商品都单独重复写那几条语句?类似这种每隔几秒还有其他的实现方式吗?
# timer1.join()
# timer2.join()
3
jotsai
2016-12-29 12:56:55 +08:00
@
RandomUser
看下 python 的线程池,应该可以解决你的问题
关于
帮助文档
自助推广系统
博客
API
FAQ
Solana
6055 人在线
最高记录 6679
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 27ms
UTC 02:13
PVG 10:13
LAX 19:13
JFK 22:13
Do have faith in what you're doing.
ubao
snddm
index
pchome
yahoo
rakuten
mypaper
meadowduck
bidyahoo
youbao
zxmzxm
asda
bnvcg
cvbfg
dfscv
mmhjk
xxddc
yybgb
zznbn
ccubao
uaitu
acv
GXCV
ET
GDG
YH
FG
BCVB
FJFH
CBRE
CBC
GDG
ET54
WRWR
RWER
WREW
WRWER
RWER
SDG
EW
SF
DSFSF
fbbs
ubao
fhd
dfg
ewr
dg
df
ewwr
ewwr
et
ruyut
utut
dfg
fgd
gdfgt
etg
dfgt
dfgd
ert4
gd
fgg
wr
235
wer3
we
vsdf
sdf
gdf
ert
xcv
sdf
rwer
hfd
dfg
cvb
rwf
afb
dfh
jgh
bmn
lgh
rty
gfds
cxv
xcv
xcs
vdas
fdf
fgd
cv
sdf
tert
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
shasha9178
shasha9178
shasha9178
shasha9178
shasha9178
liflif2
liflif2
liflif2
liflif2
liflif2
liblib3
liblib3
liblib3
liblib3
liblib3
zhazha444
zhazha444
zhazha444
zhazha444
zhazha444
dende5
dende
denden
denden2
denden21
fenfen9
fenf619
fen619
fenfe9
fe619
sdf
sdf
sdf
sdf
sdf
zhazh90
zhazh0
zhaa50
zha90
zh590
zho
zhoz
zhozh
zhozho
zhozho2
lislis
lls95
lili95
lils5
liss9
sdf0ty987
sdft876
sdft9876
sdf09876
sd0t9876
sdf0ty98
sdf0976
sdf0ty986
sdf0ty96
sdf0t76
sdf0876
df0ty98
sf0t876
sd0ty76
sdy76
sdf76
sdf0t76
sdf0ty9
sdf0ty98
sdf0ty987
sdf0ty98
sdf6676
sdf876
sd876
sd876
sdf6
sdf6
sdf9876
sdf0t
sdf06
sdf0ty9776
sdf0ty9776
sdf0ty76
sdf8876
sdf0t
sd6
sdf06
s688876
sd688
sdf86