相关疑难解决方法(0)

烧瓶长的例程

我必须在我的Flask应用程序中做一些长时间的工作.我想做异步.刚开始工作,然后从javascript检查状态.

我正在尝试做类似的事情:

@app.route('/sync')
def sync():
    p = Process(target=routine, args=('abc',))
    p.start()

    return "Working..."
Run Code Online (Sandbox Code Playgroud)

但它创造了已经不复存在的枪支工人.

怎么解决?我应该使用像芹菜这样的东西吗?

python long-running-processes flask gunicorn

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

使用 gevent 在应用程序上下文之外工作的 Flask 蓝图

我正在尝试通过 Flask 邮件使用 gevent 在 Flask 中异步发送电子邮件。我正在“在应用程序上下文之外工作”。我知道 app.app_context() 但我无法让它与我的设置一起工作。

我的应用程序是用这样的应用程序工厂创建的:

我的项目/run_dev.py

from gevent.wsgi import WSGIServer
from my_project.app import create_app
from my_project.config import DevConfig

app = create_app(DevConfig)
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

我的项目/我的项目/app.py

def create_app(config=None, app_name=None, blueprints=None):
    app = Flask(app_name)
    configure_app(app, config)
    <other stuff>
    return app
Run Code Online (Sandbox Code Playgroud)

以及我用来发送电子邮件的代码:

我的项目/我的项目/我的模块/views.py

@mymodule.route('/some/path/')
def do_something():
    do_stuff(something)
Run Code Online (Sandbox Code Playgroud)

我的项目/我的项目/我的模块/utils.py

def do_stuff(something):
    send_email(msg)

@async
def send_async_email(msg):
    mail.send(msg)

def send_mail(request_id, recipients, email_type, env=None, pool=None):
    msg = Message(
        sender=sender,
        recipients=recipients,
        subject=subject,
        body=body)
    send_async_email(msg)
Run Code Online (Sandbox Code Playgroud)

我的项目/我的项目/decorators.py

def async(f):
    def wrapper(*args, **kwargs): …
Run Code Online (Sandbox Code Playgroud)

python gevent flask flask-mail

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