最近我一直在练习用烧瓶建立一个网站。现在我遇到了一个问题。
有一个功能可以实现注册。代码如下:
def register(): ... some judgment ... if true: sendmail() return redirect(url_for('onepage'))
我的问题是:
在执行sendmail()时,需要很多时间。所以用户必须等待片刻才能得到“onepage”,大约4-5秒。这将带来糟糕的体验。我知道使用线程可以让这两个函数相互独立,但是我已经学习了很短的编程时间,所以我没有线程编程的经验,在这个问题上有没有人能为我提供一些想法或代码示例?
答案 0 :(得分:4)
你想要的是threading
而不是低级thread
。对于这种简单的情况,不需要子类化threading.Thread
,因此您可以通过
sendmail()
threading.Thread(target=sendmail).start()
之后
import threading
答案 1 :(得分:1)
在Python中有几种实现线程的方法。 一个非常简单的解决方案是
import thread
def register():
...
some judgment
...
if true:
thread.start_new_thread(sendmail,())
return redirect(url_for('onepage'))
这将异步启动sendmail()
。但是,如果sendmail
失败或返回某些内容,则需要使用其他内容。
在python中有很多关于线程的教程,我发现这很不错http://www.tutorialspoint.com/python/python_multithreading.htm
答案 2 :(得分:1)
我没有线程解决方案:我正在使用芹菜进行硬操作:发送电子邮件,获取网址,创建许多数据库记录,定期任务。
+ 您可以在不同的服务器上使用烧瓶应用程序和芹菜实例
- 你需要后端(rabbitmq,redis,mongodb等)