【发布时间】:2015-10-25 13:04:22
【问题描述】:
我有一个脚本,它应该生成一个随机数,它表示传感器温度在 25 到 28°C 之间(含),并在正文中执行带有一些 xml 的 POST 请求。代码结构如下:
def randomTemperature():
random.seed()
return str(random.randint(25,28))
create_DATA_contentInstance_xml_body = '''<obj>
<str name="appId" val="''' + new_senzor_name + '''"/>
<str name="category" val="temperature "/>
<int name="data" val="''' + randomTemperature() + '''"/>
<int name="unit" val="celsius"/>
</obj>'''
create_DATA_contentInstance = urllib2.Request(url=create_DATA_contentInstance_url ,
data=create_DATA_contentInstance_xml_body,
headers={'Authorization': 'Basic abcaW46YabcaW4='})
def createDATAcontentInstance():
urllib2.urlopen(create_DATA_contentInstance)
print "\n=== Created a DATA contentInstance ==="
def createSensorAndDataInstances():
while True:
#generate a random delay
randomDelay = random.randint(1,5)
time.sleep(randomDelay)
createDATAcontentInstance()
createSensorAndDataInstances()
如果我运行createSensorAndDataInstances(),则始终返回并发布相同的模拟温度。
我目前的理解是random.seed() 方法使用系统的当前时间作为方法的参数,因此该方法应该返回一个随机数,如果我运行以下代码,它会返回一个随机数,这是我的剥离版本脚本代码:
import random
import time
def randomTemperature():
random.seed()
return str(random.randint(25,28))
def createSensorAndDataInstances():
while True:
#generate a random delay
randomDelay = random.randint(1,5)
time.sleep(randomDelay)
print randomTemperature()
createSensorAndDataInstances()
有人知道为什么它在第一种情况下总是返回相同的数字吗?
EDIT1:尝试了@dursk 的建议,但它仍然不起作用。我做了以下更改:
create_DATA_contentInstance_xml_body = '''<obj>
<str name="appId" val="''' + new_senzor_name + '''"/>
<str name="category" val="temperature "/>
<int name="data" val="{}"/>
<int name="unit" val="celsius"/>
</obj>
'''
和
create_DATA_contentInstance = urllib2.Request(url=create_DATA_contentInstance_url ,
data=create_DATA_contentInstance_xml_body.format(randomTemperature()),
headers={'Authorization': 'Basic YWRtaW46YWRtaW4='})
【问题讨论】: