gpt4 book ai didi

python - Flask + uwsgi + 线程

转载 作者:行者123 更新时间:2023-12-03 12:43:57 38 4
gpt4 key购买 nike

我有一个 Flask 应用程序,我想通过线程每分钟执行一次更新任务。

线程设置如下:

def print_thread():
print "I am a thread"

@app.before_first_request
def start_thread():
threading.Timer(60, print_thread).start()

Flask 应用程序通过 uwsgi 运行:
uwsgi_python -s /tmp/uwsgi.sock --processes 1 --threads 4 -w app:app --enable-threads

我以前遇到过这个问题,并通过 flask 解决了这个问题。每分钟通过 cron 调用的端点,但我想要一个更清洁的解决方案,它包含在 flask 中。应用。

任何人都可以识别问题吗?

或者知道一个干净的解决方案来解决这个问题?

谢谢

最佳答案

我建议避免在与通过 WSGI 创建的 flask 实例相同的进程中运行后台任务。这使您可以确保通过 uwsgi 创建的多个进程\线程,后台任务不会重复。
您可以从不同的文件启动单独的 python 进程并使用 python 计划,例如,apscheduler .

from apscheduler.schedulers.background import BlockingScheduler

from app import create_app # Your app factory
from app import job # A job function

# Most probably, your background job will depend on your app being initialized
# If you don't use the app factory pattern, you can simply import a file containing your app to trigger initialization.
app = create_app()

scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', minutes=1)

scheduler.start()
然后你可以把这个脚本放在你的 app.py 旁边并启动一个进程 python your_name.py并保持它与 uwsgi 一起运行。通过这种方式,您的 Web 应用程序和后台任务将共享代码和配置,但进程将明确分开。

关于python - Flask + uwsgi + 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45864813/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com