小编Sus*_*ant的帖子

Python 异步任务取消

我正在阅读任务取消的异步文档,我遇到了这个-

要取消正在运行的任务,请使用 cancel() 方法。调用它会导致任务将 CancelledError 异常抛出到包装的协程中。如果协程在取消期间等待 Future 对象,则 Future 对象将被取消。

cancelled() 可用于检查任务是否被取消。如果包装的协程没有抑制 CancelledError 异常并且实际上被取消,则该方法返回 True 。

我在这里有几个问题 -

  • 包装协程是调用取消的协程吗?让我们在这里举个例子——

    async def wrapped_coroutine():
        for task in asyncio.Task.all_tasks():
            task.cancel()
    
    Run Code Online (Sandbox Code Playgroud)

    那么wrapped_coroutine()封装的协程是否会抛出异常呢?

  • 什么时候会抛出这个异常?在哪里?

  • 这里抑制异常是什么意思?是不是这个意思——

    async def wrapped_coroutine():
        for task in asyncio.Task.all_tasks():
            task.cancel()
            try:
                await task
            except asyncio.CancelledError:
                print("Task cancelled")
    
    Run Code Online (Sandbox Code Playgroud)

    如果没有,请提供有关如何抑制此异常的示例。

还有一个不相关的(它与取消任务有关),当我取消这些任务时如何从这些任务中检索异常,所以我看不到这个 -

Task exception was never retrieved future:
Run Code Online (Sandbox Code Playgroud)

是之前task.cancel()还是try之前await task(在上面的例子中)?

python asynchronous python-3.x python-asyncio

10
推荐指数
1
解决办法
1万
查看次数

Django ConnectionAbortedError:[WinError 10053]建立的连接被主机中的软件中止了

我在PostgreSQL中使用django,每当我尝试保存或删除任何内容时,都会发生此错误-

Traceback (most recent call last):
File "c:\program files (x86)\python35-32\Lib\wsgiref\handlers.py", line 138, in run
self.finish_response()
File "c:\program files (x86)\python35-32\Lib\wsgiref\handlers.py", line 180, in finish_response
self.write(data)
File "c:\program files (x86)\python35-32\Lib\wsgiref\handlers.py", line 274, in write
self.send_headers()
Not Found: /favicon.ico
File "c:\program files (x86)\python35-32\Lib\wsgiref\handlers.py", line 332, in send_headers
self.send_preamble()
File "c:\program files (x86)\python35-32\Lib\wsgiref\handlers.py", line 255, in send_preamble
('Date: %s\r\n' % format_date_time(time.time())).encode('iso-8859-1')
[02/Aug/2016 18:30:14] "GET /favicon.ico HTTP/1.1" 404 2044
File "c:\program files (x86)\python35-32\Lib\wsgiref\handlers.py", line 453, in _write
self.stdout.write(data)
File "c:\program files (x86)\python35-32\Lib\socket.py", line 593, in …
Run Code Online (Sandbox Code Playgroud)

python django postgresql

7
推荐指数
1
解决办法
5783
查看次数

从列表的词典列出理解

我有一个字典 -

a = {'b': [1,2,3], 'c':[4,5,6]}
Run Code Online (Sandbox Code Playgroud)

我只想使用list comprehension来实现这个输出 -

[['c', 4], ['c', 5], ['c', 6], ['b', 1], ['b', 2], ['b', 3]]
Run Code Online (Sandbox Code Playgroud)

一个简单的for循环完成它 -

x = []
for k, v in a.iteritems():
    for i in v:
        x.append([k, i])
Run Code Online (Sandbox Code Playgroud)

试图将其转换为列表理解,我这样做 -

[[k,i] for i in v for k, v in a.items()]
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,我得到了一个输出

[['c', 1], ['b', 1], ['c', 2], ['b', 2], ['c', 3], ['b', 3]]
Run Code Online (Sandbox Code Playgroud)

什么应该是正确的列表理解,为什么我的列表理解不起作用?

python list-comprehension

4
推荐指数
1
解决办法
1080
查看次数