首页 新闻 会员 周边 捐助

一个flask项目部署到两个服务器上,如何根据不用的内容选择不同的服务器运行

0
[已解决问题] 解决于 2021-04-25 09:48

在一个项目中,数据库会存有多个邮箱的信息,而运行的接口会经常调用到两个方法:
一个是使用 smtp 连接遍历的邮箱去发送邮件,
一个是使用 imap 遍历数据库的邮箱去获取邮件,

现在出现的问题是:
当从数据库中获取到的邮箱是国外的邮箱时,比如 gmail 邮箱,那么在发送跟获取邮件时总是会超时报错;而国内的正常。

现在准备把项目部署到两个服务器,一个国内,一个国外。
请问有什么方法,可以判断当接口中调用发送或获取邮件的方法使用的是国外邮箱时,自动选择运行国外的服务器,而当判断到是国内邮箱时,自动运行国内的服务器去执行代码。
有没有这种解决的方法或者可以进行其它配置去解决”当遍历运到国外邮箱超时报错“ 的问题,谢谢

F·灬小人物的主页 F·灬小人物 | 菜鸟二级 | 园豆:218
提问于:2021-04-13 22:32
< >
分享
最佳答案
0

你这么着,在国内服务器上做出判断,国内邮箱就正常走流程,国外邮箱就自己模拟发邮箱请求到自己的国外服务器上,这不就自动规避了吗

奖励园豆:5
临冬城城主 | 菜鸟二级 |园豆:261 | 2021-04-22 11:53

是的,但我不是在服务器上做判断,因为我不知道怎么在上面做判断。。。。现在成功做的是由前端去判断,根据不同的邮箱号去调用不同服务器上的接口。

F·灬小人物 | 园豆:218 (菜鸟二级) | 2021-04-25 09:18

@F·灬小人物: 这也可以的,一样的思路,只不过一个是在前端做判断,一个在后端做判断,前端判断更合适一些,少发一次请求,少些延时,很好,very good

临冬城城主 | 园豆:261 (菜鸟二级) | 2021-04-25 09:42
其他回答(1)
0

可以尝试将邮箱分类 比如gmail这种就发国外 非gmail就发国内 国外邮箱放到一个list里 国内放到一个list里 分别循环 调用不用的发送方法

Jruing | 园豆:282 (菜鸟二级) | 2021-04-14 17:27

您好,谢谢您的回答,但我目前就是不清楚该如何去决定在哪个服务器运行。
现在的情况是:我定义了 send_email() 这个函数来发送邮件,我现在调用了一个接口:比如(http:xxx.com./send_email_api),该接口里面先获取了数据库中的邮箱号,然后判断邮箱号是不是有 gmail邮箱,再去调用 send_email 发送邮件。
问题就出在当我判断到是gmail邮箱时,调用的那个方法(比如叫 send_email_2),那我该怎么把这个方法放在国外服务器。
我试过直接把项目都放在两个服务器上运行,但只有国内的会调用到接口,我试过把国内的发送接口注释掉,以为它就会去自动运行国外的同个接口,但发现它是直接报错说没有该接口了。

支持(0) 反对(0) F·灬小人物 | 园豆:218 (菜鸟二级) | 2021-04-14 17:42

这是我的接口跟发送邮件的函数。
接口:

函数:

支持(0) 反对(0) F·灬小人物 | 园豆:218 (菜鸟二级) | 2021-04-14 17:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册