小编Bla*_*ark的帖子

使用Pandas进行自定义排序

我有以下数据框,我想先按Criticality排序,然后按名称排序:

Name        Criticality
baz         High
foo         Critical
baz         Low
foo         Medium
bar         High
bar         Low
bar         Medium
...
Run Code Online (Sandbox Code Playgroud)

我一直试图使用这篇文章中提供的答案来做到这一点,但我无法让它工作.

最终结果应该是这样的

Name        Criticality
bar         High
bar         Medium
bar         Low
baz         High
baz         Low
foo         Critical
foo         Medium
Run Code Online (Sandbox Code Playgroud)

python sorting pandas

7
推荐指数
2
解决办法
6176
查看次数

在 asyncio 异常后重新排队期货

我想弄清楚如何重新排队一些已超时的异步 DNS 请求(我正在使用 uvloop 和 aiodns 模块)。

这是我设置循环的代码:

asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
loop = asyncio.get_event_loop()
resolver = aiodns.DNSResolver(loop=loop)
sem = asyncio.Semaphore(MAX_COUNT)
Run Code Online (Sandbox Code Playgroud)

此函数执行查找:

async def lookup(name):
    with (await sem):
        response = await resolver.query(name, 'A')
        return response
Run Code Online (Sandbox Code Playgroud)

我读入了一个包含名称的文件以查找和设置任务,包括处理结果的回调:

for n in names:
    host = '{}.{}'.format(n, domain)
    task = asyncio.ensure_future(lookup(host))
    tasks.append(task)
    task.add_done_callback(functools.partial(got_result, host))
Run Code Online (Sandbox Code Playgroud)

并启动查找队列。

print("Looking up {} subdomains...".format(len(names)))
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
Run Code Online (Sandbox Code Playgroud)

got_result回调中,我然后测试 future.exception() 并处理它,如果有,如果没有,则将结果打印到屏幕上。我可以接受一些例外情况(即找不到域名),但其他人喜欢超时,我想重新排队项目。是否有一种简单的方法可以将未来添加回循环以进行另一次尝试,还是我需要为此设置单独的功能并手动重新添加任务?

谢谢你的帮助。

python asynchronous future task

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

标签 统计

python ×2

asynchronous ×1

future ×1

pandas ×1

sorting ×1

task ×1