本文将为您介绍如何通过PyODPS节点结合独享资源组的方式,实现邮件外发的需求。

背景信息

DataWorks PyODPS节点和Python脚本并不相同,PyODPS节点主要用于和MaxCompute交互进行数据分析处理。您可以通过PyODPS节点结合独享资源组的方式,实现从MaxCompute拉取数据进行邮件外发的场景需求。

通过PyODPS节点+独享资源组的方式实现邮件外发

  1. 创建独享资源组,独享资源组和DataWorks工作空间的地域保持一致。详情请参见独享资源模式

    说明 资源组创建成功后,单击相应资源组后的修改归属工作空间,将其指派给相应的工作空间。
  2. 数据开发面板创建PyODPS节点,填写SMTP发送代码并保存,示例如下:
    import smtplib
    from email.mime.text import MIMEText
    from odps import ODPS
    mail_host = '<yourHost>' //邮箱服务地址
    mail_username = '<yourUserName>' //登录用户名
    mail_password = '<yourPassWord>'  //登录用户密码
    mail_sender = '<senderAddress>' //发件人邮箱地址
    mail_receivers = ['<receiverAddress>']  //收件人邮箱地址
    mail_content=""        //邮件内容
    o=ODPS('access_key','access_secretkey','default_project_name',endpoint='maxcompute_service_endpoint')
    with o.execute_sql('query_sql').open_reader() as reader:
               for record in reader:
                       mail_content+=str(record['column_name'])+' '+record['column_name']+'\n'
    message = MIMEText(mail_content,'plain','utf-8')
    message['Subject'] = 'mail test'
    message['From'] = mail_sender
    message['To'] = mail_receivers[0]
    try:
               smtpObj = smtplib.SMTP_SSL(mail_host+':465')
               smtpObj.login(mail_username,mail_password)
               smtpObj.sendmail(
                   mail_sender,mail_receivers,message.as_string())
               smtpObj.quit()
               print('mail send success')
    except smtplib.SMTPException as e:
               print('mail send error',e)
  3. 提交PyODPS节点,进入运维中心页面修改任务调度资源组为独享资源组。

  4. 测试运行PyODPS节点。

总结

通过PyODPS节点+独享资源组的方式实现邮件外发时,独享资源组用户无法登录到对应的机器,导致无法安装更多Python第三方模块,实现更多的功能。