小编pfc*_*pfc的帖子

如何重新输入上次引发异常的迭代器/生成器对象

我目前正在尝试使用类似于生成器的行为来允许快速上下文切换和并发,而没有多进程的开销和复杂性,这很好地工作但是我试图找到一种方法让这些迭代器在引发异常后恢复.

据我所知,技术上不可能在发生异常后恢复生成器,如下所示:

def test():
    yield 1
    raise KeyboardInterrupt
    yield 2

a = test()
for x in range(2):
    try:
        print('Trying next...')
        print(next(a))
    except:
        pass
Run Code Online (Sandbox Code Playgroud)

结果是:

Trying next...
1
Trying next...
Run Code Online (Sandbox Code Playgroud)

从未达到第二次收益.这是预期的行为.

我正在寻找的,希望有人有办法,将允许运行这样的生成器,在生成器之外处理异常,然后让生成器保留旧的上下文(可能由异常处理修改)代码)然后继续执行.

目前我有以下设置:

class base:
    def __iter__(self):
        self._run = self.main()
        return self
    def __next__(self,_run=None):
        try:
            return next(self._run)
        except tuple(self.exceptions.keys()) as e:  # if exception handler exists, use it
            exception = e.__class__
            self._run = self._end()  # end thread if the handler also fails
            handler = self.__next__(self.exceptions[exception])
            if handler:  # if …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

如何在 Django 中的每个管理页面加载上运行 python 函数

我希望在每次加载管理界面的页面时都运行一个 python 函数。这不需要在每个页面加载(即非管理相关页面)上运行。此函数需要请求对象或用户 ID。

我知道我可以创建一个新视图并从页面的 javascript 调用它,但这似乎是一种可怕的方法。有没有办法以某种方式将功能附加到管理页面加载服务器端而不添加任何额外的依赖项?

更新:该函数用于连接一种日志系统,该系统跟踪每个用户每天的第一次/最后一次交互,每当用户使用管理界面时就需要更新该交互。看来中间件应用程序可以让我做我想做的事,谢谢你们!

python django django-admin python-3.x

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

标签 统计

python ×2

python-3.x ×2

django ×1

django-admin ×1