解決したら、すべての greenlet は、同じ接続を共有するのではなく、1 つの接続を持つ必要があります。
MySQL データベースに大量のデータを挿入したいと考えています。私gevent
はインターネットからデータをダウンロードし、そのデータを MySQL に挿入していました。MySQL async に挿入するumysqldbを見つけまし た。ただし、次のエラーが表示されます: Mysql Error 0: Concurrent access in query method
.
私のコードは次のとおりです。
def insert_into_mysql(conn,cur,pid,user,time,content):
try:
value=[pid,user,time,content]
#print 'value is', value
print 'hi'
cur.execute('insert into post(id,user,time,content) values(%s,%s,%s,%s)',value)
print 'after execute'
conn.commit()
# except MySQLdb.Error,e:
except umysqldb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
insert_into_mysql
に含まれていdownload_content
ます:
while len(ids_set) is not 0:
id = ids_set.pop()
print 'now id is', id
pool.spawn(download_content,conn,cur,int(id))
r.sadd('visited_ids',id)
pool.join()