【问题标题】:Asynchronous Service Calls Python异步服务调用 Python
【发布时间】:2018-06-20 12:54:55
【问题描述】:

我正在开发一项服务,其中我们必须将用户数据存储在数据库中,并向用户发送电子邮件作为通知并返回成功响应,完成此过程需要一些时间。

由于 Python 脚本是同步执行的,我想异步运行这个过程,例如,存储用户详细信息并返回成功响应,然后必须异步完成邮件处理(稍后在返回成功响应之后),以便整体响应不应依赖此邮件执行

    def userregistration(details):
        #store user details
         result = storeuserdb(details)
         print("storeuserdb result", result)
         result["status"] == True:  
             sendmailtouser()     #have to be asynchronously
         return result

    def storeuserdb(details)
       #store code goes here


    def sendmailtouser()
       #email code goes here

将响应返回给服务后是否有机会再次运行? 像这样

    def userregistration(details):
        #store user details
         result = storeuserdb(details)
         print("storeuserdb result", result)
         return result
         result["status"] == True:  
             sendmailtouser()     #have to be asynchronously

【问题讨论】:

标签: python mysql python-3.x flask smtplib


【解决方案1】:

您可以使用线程。这是一个小例子:

import threading

def worker(num):
    """thread worker function"""
    print 'Worker: %s\n' % num 
    if num == 1:
        print 'I am number 1'
        raw_input("Press Enter to continue...")
    return

threads = []
for i in range(5):
    t = threading.Thread(target=worker, args=(i,))
    threads.append(t)
    t.start()

输出:

Worker: 3
Worker: 0
Worker: 1
Worker: 2
Worker: 4

I am number 1
Press Enter to continue...

处理工人 1 时程序不会停止。虽然需要输入。

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 2023-03-15
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多