不知道是否有更好的方法來做到這一點,但我有一個在我的網站註冊頁面,並在用戶註冊後,我添加他們的初始數據(東西在__init__
數據模型),然後我開始添加一些其他信息在同一部分,這給我一個broken pipe
錯誤。奇怪的代碼似乎工作,因爲我期待的條目是在數據庫中。我嘗試過在.flush()
命令中移動,看看它是否有幫助,但看起來似乎沒有。爲什麼在將數據添加到數據庫時發生管道故障錯誤?
Traceback (most recent call last):
File "/Users/me/Dropbox/code/eclipseWorkSpace/website/pyramidwiki/lib/python2.7/site-packages/waitress-0.8.1-py2.7.egg/waitress/channel.py", line 134, in handle_write
flush()
File "/Users/me/Dropbox/code/eclipseWorkSpace/website/pyramidwiki/lib/python2.7/site-packages/waitress-0.8.1-py2.7.egg/waitress/channel.py", line 249, in _flush_some
num_sent = self.send(chunk)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.py", line 365, in send
result = self.socket.send(data)
error: [Errno 32] Broken pipe
這裏是我的代碼:
if 'form.submitted' in request.params:
firstname = request.params['firstname']
lastname = request.params['lastname']
email = request.params['email']
password = request.params['password']
try:
new_user = Users(email, firstname, lastname, password)
DBSession.add(new_user)
#DBSession.flush() #commit so we get error if any
#add some other info
user_data = DBSession.query(Users).filter(Users.email==email).first()
user_data.join_date = datetime.datetime.now()
#create random number for verification url
user_data.vertified = id_generator(50)
DBSession.flush() #doesn't seem to make a difference where the flush is
return HTTPFound(location = request.route_url('new'))
任何想法?
斷開的管道通常與請求超時或客戶端關閉連接相關聯。 – 2012-07-09 15:41:16
有沒有辦法找出它發生的地點/原因?這是在添加'user_data'變量並開始在初始添加用戶之後開始添加數據之後開始的。或者有更好的方法來實現它?在創建用戶之後,我想添加一些信息。 – Lostsoul 2012-07-09 17:04:06
我有同樣的問題,但無法弄清楚是什麼原因造成的。你最終找到了解決方案嗎? – Bach 2012-12-03 06:02:00