将Python2.6转换为Google App Engine兼容(多处理)

use*_*542 0 python google-app-engine multiprocessing

我在Python中创建了一个使用多处理的小脚本.我曾想过将它作为一个cron-job在Google App Engine上运行,但遗憾的是Google App Engine不支持多处理.任何人都可以帮助我将其转换为Google App Engine兼容代码(可能使用Google App Engine任务吗?)?

from multiprocessing import Pool
import MySQLdb
import urllib;
import urllib2;

def f(email_url):
    url = "http://my-domain.com/cron.php"
    values = { "email" : email_url[0], "url" : email_url[1] }
    data = urllib.urlencode(values)
    req = urllib2.Request(url, data)
    urllib2.urlopen(req)

if __name__ == '__main__':
    p = Pool()
    emails_urls = list()
    conn = MySQLdb.connect(host = "XXX.XXX.XXX.XXX", user = "USERNAME",
                           passwd = "PASSWORD", db = "MY-DATABASE")
    cursor = conn.cursor()
    cursor.execute ("SELECT email, url FROM data")
    rows = cursor.fetchall()
    for row in rows:
        emails_urls.append((row[0], row[1]))
    cursor.close()
    conn.close()

    p.map(f, emails_urls)
Run Code Online (Sandbox Code Playgroud)

Dan*_*rka 5

看看任务队列.

ca可以将一定量的工作插入到任务队列(=>线程)中,并设置队列中同时执行的作业数.

看看这里:http://code.google.com/intl/de-DE/appengine/docs/python/taskqueue/

  • 延迟库是任务队列的包装器,它更适合此脚本的当前功能.http://code.google.com/appengine/articles/deferred.html (2认同)