小编lyn*_*hey的帖子

在烧瓶应用程序启动后运行代码

我的目标是在Flask应用程序启动后运行任意代码.这是我得到的:

def run():
    from webapp import app
    app.run(debug=True, use_reloader=False)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以这样做:

def run():
    from webapp import app
    app.run(debug=True, use_reloader=False)
    some_code()
Run Code Online (Sandbox Code Playgroud)

但代码不会继续app.run(),所以some_code()永远不会运行.

我目前正在处理的解决方案是在app.run()的一个单独的线程中运行some_code(),创建一个设置它的第一个请求函数:

app.is_running = True
Run Code Online (Sandbox Code Playgroud)

然后获取some_code()以向app发送基本请求,以便"在第一次请求之前"代码运行.这相当复杂,难以记录.我宁愿使用已经在Flask中提供的app.is_running参数,或者使用@app.after_server_start装饰器,但据我所知,这些都不存在.

帮我改进这段代码?


遗腹:每当我想到这个问题,它都会让我希望@app.after_server_start装饰品存在.

python flask flask-script

34
推荐指数
4
解决办法
2万
查看次数

清除 postgresql 和 alembic 并从头开始

我通过搜索发现的所有内容在某种程度上都是错误的或不完整的。那么,我该如何:

  • 删除我的 postgresql 数据库中的所有内容
  • 删除我所有的 Alembic 修订版
  • 使我的数据库 100% 像新的一样

python postgresql sqlalchemy alembic

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

PyTest-将每个测试作为多处理流程运行

我正在使用pytest来运行测试,并测试我的Web应用程序。我的测试文件看起来像

def test_logins():
    # do stuff

def test_signups():
    # do stuff

def testing_posting():
    # do stuff
Run Code Online (Sandbox Code Playgroud)

它们大约有20个,其中许多具有恒定时间运行或依赖于外部HTTP请求的元素,因此,如果我可以让pytest启动20个不同的mutliprocessing,这似乎会导致测试速度大大提高。流程(每个测试一个)来运行每个测试功能。这可能/合理/建议吗?

我调查了xdist,但将测试进行了拆分,以便根据我的计算机上的内核数量运行这些测试不是我想要的。

同样在相关的情况下,大部分测试是使用python的请求库完成的(尽管最终它们将移至selenium)

python selenium multithreading pytest python-3.x

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

Flask HTML Escape装饰器

如何在HTML路由上使用装饰器来转义其输出.也就是说,我如何在html_escape这里编写函数:

@app.route('/')
@html_escape
def index():
    return '<html></html>'
Run Code Online (Sandbox Code Playgroud)

(我觉得应该有这个和其他简单的装饰者的扩展)

python flask

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