纯小白,顺着廖雪峰的 python 教程往下走,好不容易走到实战 Day 4 - 编写 Model ,蛋疼连续剧开始了
蛋疼第一期:
#test.py(下面首行都没有缩进,不知道怎么缩进,先忽略不看)
import asyncio, orm
from models import User, Blog, Comment
loop = asyncio.get_event_loop()
async def test():
await orm.create_pool(loop=loop,host='localhost', port=3306,
user='www-data', password='www-data', database='awesome')
u = User(name='Test', email='test@example.com',
passwd='1234567890', image='about:blank')
await u.save()
loop.run_until_complete(test())
loop.close()
结果报错: RuntimeError: Event loop is closed
蛋疼第二期:参考评论建议,在 loop.close()后加入一个 sys.exit()语句
import asyncio, orm
from models import User, Blog, Comment
loop = asyncio.get_event_loop()
async def test():
await orm.create_pool(loop=loop,host='localhost', port=3306,
user='www-data', password='www-data', database='awesome')
u = User(name='Test', email='test@example.com',
passwd='1234567890', image='about:blank')
await u.save()
loop.run_until_complete(test())
loop.close()
#加入 sys.exit()语句
if loop.is_closed():
sys.exit(0)
结果报错: RuntimeError: Event loop is closed (并没有什么软用)
蛋疼第三期:
参考评论建议,在关闭 event loop 之前,首先需要关闭连接池,所以增加
了销毁连接池的方法
在 orm.py 中定义 destroy_pool()方法:
async def destroy_pool():
#声明全局变量
global __pool
#如果__pool 不为空
if __pool is not None:
#关闭__pool
__pool.close()
#异步调用__pool.wait_closed(), wait_closed()用于等待直到 close()方法完成
await __pool.wait_closed()
然后修改 test.py 代码:
import asyncio, orm
from models import User, Blog, Comment
loop = asyncio.get_event_loop()
async def test():
await orm.create_pool(loop=loop,host='localhost', port=3306,
user='www-data', password='www-data', database='awesome')
u = User(name='Test', email='test@example.com',
passwd='1234567890', image='about:blank')
await u.save()
await destroy_pool() #销毁连接池
loop.run_until_complete(test())
loop.close()
结果报错: timeError: Event loop is closed (看评论别人都解决了为何我还是蛋疼)
蛋疼第四期:询问朋友,朋友说看这里 http://stackoverflow.com/questions/32598231/asyncio-runtimeerror-event-loop-is-closed
结果报错: I don ’ t understand (英文和中文理解力都不够)
抱着在杭州找到一份 python 工作的目的,求 v 友解救,带我出坑,手动抱拳
还有,按照我目前的进度,想快速找到python工作还需要熟悉哪些模块?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.