2011-05-16 61 views
0

我已经在使用多处理的Python中创建了一个小脚本。我曾想过将它作为cron-job在Google App Engine上运行,但不幸的是Google App Engine不支持多处理。任何人都可以帮助我将其转换为Google App Engine兼容代码(可能使用Google App Engine任务?)?将Python2.6转换为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) 

回答

5

看看任务队列。

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

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

+2

递延库,它是围绕任务队列的包装,将是这个脚本的当前功能的更好的贴合。 http://code.google.com/appengine/articles/deferred.html – Calvin 2011-05-16 20:23:08

+0

是的你是对的 – 2011-05-16 20:25:07