最近在SAE上开发了一个给kindle退送书的小公众号(kindle免费书库),由于微信对http响应时间

有限制,而推送本身是发邮件,当附件一大就很容易超时而使得用户收不到应答。一开始我是想通过多线程

thread.start_new_thread的方式来多开线程发送,主线程直接告诉用户发过去了的方案解决的。但代码

上到SAE后发现不可行,因为SAE本身不支持Python的多线程,使用thread.start_new_thread的效果跟

直接在主线程掉函数是完全一样的。

  这个问题郁闷了我一段时间,后来发现SAE有提供一个叫TaskQueue的玩意,可以通过异步http请求的

方式实现多进程。示例见:http://sae.sina.com.cn/doc/python/taskqueue.html

试过发现效果相当好,同时它是可以高并发公工作的。所以,以后如果有速度不够需要多线程来加速的话,就

直接适用TaskQueue啦:)

SAE中Python无法创建多线程的解决方案的更多相关文章

  1. 使用MFC中的AfxBeginThread创建多线程

    创建一个基于对话框的工程,工程名为CreateThreadRect   在CreateThreadRect.cpp中增加一个ThreadProc函数,代码如下   工作者线程的函数必须是全局函数或静态 ...

  2. Java如何创建多线程服务器?

    在Java编程中,如何创建多线程服务器? 以下示例演示如何使用ServerSocket类的MultiThreadServer(socketname)方法和Socket类的ssock.accept()方 ...

  3. Python | 面试必问,线程与进程的区别,Python中如何创建多线程?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第20篇文章,我们来聊聊Python当中的多线程. 其实关于元类还有很多种用法,比如说如何在元类当中设置参数啦,以及一 ...

  4. 聊聊Python中的多进程和多线程

    今天,想谈一下Python中的进程和线程. 最近在学习Django的时候,涉及到了多进程和多线程的知识点,所以想着一下把Python中的这块知识进行总结,所以系统地学习了一遍,将知识梳理如下. 1. ...

  5. Python中的多进程、多线程和协程

    本文中的内容来自我的笔记.撰写过程中参考了胡俊峰老师<Python程序设计与数据科学导论>课程的内容. 并发处理:多进程和多线程 前置 概念: 并发:一段时间内同时推进多个任务,但不一定要 ...

  6. Python中的多进程与多线程(二)

    在上一章中,学习了Python多进程编程的一些基本方法:使用跨平台多进程模块multiprocessing提供的Process.Pool.Queue.Lock.Pipe等类,实现子进程创建.进程池(批 ...

  7. Python并发编程之创建多线程的几种方法(二)

    大家好,并发编程 进入第二篇. 今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础.学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章. 本文目录 学会使用函数创建多 ...

  8. 深入浅析python中的多进程、多线程、协程

    深入浅析python中的多进程.多线程.协程 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源 ...

  9. 转:MFC中创建多线程

    MFC中创建多线程   MFC的多线程函数必须声明为静态的或者是全局函数(不同的在于全局函数不能访问类的私有静态成员,而静态类函数可以):但这样的线程函数只能访问静态的成员变量,要实现访问类的其他成员 ...

随机推荐

  1. 常用sql:按照表中的某一列对数据进行分组,统计数据条数

    select FROM_UNIXTIME(start_time,'%Y-%m-%d')as date,COUNT(*) FROM random_num GROUP BY FROM_UNIXTIME(s ...

  2. DNS信息探测

    前面学习一下DNS域名解析原理及过程,今天我们学习下DNS域名信息的探测 本章主要目标是从各个角度搜集测试目标的基本信息,包括搜集信息的途径.各种工具的使用方法,以及简单的示例. 0x00 DNS信息 ...

  3. mysql向表中某字段前后追加一段字符串 concat(), trim(), ltrim(), rtrim(), repeat()

    1.mysql向表中某字段后面追加一段字符串:update table_name set field=CONCAT(field, '分隔符', str);//'分隔符',可以为空,也可以省略updat ...

  4. usb驱动正在使用不能卸载

    @ubuntu:/home/lyd# rmmod cyusb3610rmmod: ERROR: Module cyusb3610 is not currently loadedroot@ubuntu: ...

  5. .NET界面控件DevExpress全新发布v19.1.5|改进Office 2019主题

    DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...

  6. SIM800c收发短信及AT指令

    一.sim800设备安装 淘宝搜索sim800,差不多就是这么个样子 购买之后,安装手机卡,卡的缺口向外插入,会有卡住的感觉,再按一下卡会弹出 安装usb转串口驱动(CH340),设备的指示灯先是快闪 ...

  7. C# MVC入門

    博客園已有教程,記錄一下防止遺忘,以後也可以多回顧回顧(http://www.cnblogs.com/iamlilinfeng/archive/2013/04/01/2992432.html) 使用V ...

  8. Python 正则表达式Ⅳ

    repl 参数是一个函数 以下实例中将字符串中的匹配的数字乘以 2: 执行输出结果为: re.compile 函数 compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象 ...

  9. JavaScript的数组API函数

    ㈠数组转字符串 ⑴String(arr):将arr中的每个元素转为字符串,用逗号分隔     固定套路:对数组拍照:用于鉴别是否数组被修改过 ⑵arr.join("连接符"):将a ...

  10. C# AVI Image 转换

    AVI视频库 http://download.csdn.net/download/qc_id_01/9970151 Avi视频文件的编码有很多,这个库只支持部分Avi文件,有些Avi文件不支持,具体哪 ...