C++;调用python脚本来处理电子邮件 服务器上有一个C++程序,它可以输入一些输入,并将一些输出写入文件。生成文件后,我想向一个人发送一封电子邮件,其中包含文件的相应链接 我宁愿避免从C++本身处理SMTP,所以我想到了C++使用系统调用来执行Python脚本,这将反过来处理电子邮件进程。

C++;调用python脚本来处理电子邮件 服务器上有一个C++程序,它可以输入一些输入,并将一些输出写入文件。生成文件后,我想向一个人发送一封电子邮件,其中包含文件的相应链接 我宁愿避免从C++本身处理SMTP,所以我想到了C++使用系统调用来执行Python脚本,这将反过来处理电子邮件进程。,c++,python,smtp,C++,Python,Smtp,在C++中: system("python emailer.py foo@bar.com filetodownload.txt"); 在Python中: import sys email = sys.argv[1] file = sys.argv[2] // handle SMTP emailing... 我对这种简单的方法有一个疑问。C++程序是多线程的,因此可能有不止一个线程想调用Python脚本来发送电子邮件。这是一个问题吗?一个(简单的)解决方案是在C++程序中有一个互斥变量,它只允

在C++中:

system("python emailer.py foo@bar.com filetodownload.txt");
在Python中:

import sys
email = sys.argv[1]
file = sys.argv[2]
// handle SMTP emailing...

我对这种简单的方法有一个疑问。C++程序是多线程的,因此可能有不止一个线程想调用Python脚本来发送电子邮件。这是一个问题吗?一个(简单的)解决方案是在C++程序中有一个互斥变量,它只允许一个线程每次调用Python脚本吗?另外,如果有更好的方法来完成这项任务,请让我知道。

根据您的演示,我没有看到任何需要多线程同步的共享资源。对python的每个系统调用都将导致一个单独的过程。

您可以将电子邮件推送到数据库,让python脚本轮询它并从那里发送任何电子邮件。或者让脚本持续运行,当它用完作业时,等待某样东西吗(无论是从DB中得到的东西,还是简单的POSIX信号或信号量或Windows事件或C++代码中的任何内容)“重新开始查看。无论如何,在发送一封电子邮件的时间内,您是否可能会收到500份工作?如果是,您是否可以尝试同时发送500封电子邮件,或者您是否需要将其排队?(请记住,发送电子邮件可能会失败,例如,DNS查找超时2分钟。)如果第一个答案是“不”,或者第二个答案是“很好”作为一个旁注,系统> /COD>通常不是C++中运行子进程的最佳方法,除了在快速和肮脏的情况下,如果可以使用<代码> POPNE<代码>,<代码> Foe/<代码> > Exc> <代码>,<代码> PosixySpOnn,<代码> CurralPosie<代码>,等等,通常是值得做的。考虑到最近将Python嵌入C++中,工作相当不错,但是你确实需要编写自己的包装类。这或多或少是我所要做的。谢谢你的澄清。