Python 与 Laravel 交互的一种尝试

最近在做的一个 Ticket 站点,用户除了按正常流程在网页端提交,还有可能向网页上的邮箱中发送邮件。客服的需求是这部分邮件可以自动转化为 Ticket,同时对于用户回复给发信机器人的邮件也可以自动转化为对于 Ticket 的回复。

参考公司其他同事的处理方式,最终方案概括来讲就是使用 Pythonpoplib 包来定期接收邮件,解析处理后转交给PHP进行业务处理,用py收发邮件主要是py标准库自带处理邮件的特别是收取邮件的功能。这就要求两门语言能互相通信,我考虑了两种办法。

方法 1:文件加Artisan
  • py 处理完 email 后把格式化好的数据写入服务器指定目录的一个文件里,每封 email 就是一个文件,在这次的实际例子中我是写在storage下的子目录里。php 这边提供一个artisan命令,py 通过os.system('php artisan xxxx email_id')调用,php 中 file_get_contents后执行业务,成功后删除email文件即可。
  • 弊端:py 拿不到 php 的处理结果,再加中转的话会变复杂;分布式使用为 0,php 一定是多台服务器的,这样处理只有部署 py 的服务器能参与。
方法 2:接口处理
  • py 调用 php 的接口,这样其实比较粗暴,但是可以很好的解决上面的两个问题。

未实现的方法

  1. 引入队列,py 作为生成者,php 作为消费者,整体是异步的架构。结果返回的形式反过来,互换角色。
  2. 完善 python 的逻辑,取消对 php 的依赖。
  3. py 和 php 都监听一个公共的消息中间件,比如MQTT py 把数据发布在一个指定的Topic中,php 处理后把结果发布在另一个Topic中,py拿到返回。 (我能想到最健壮的方案,但是代价比较大)

其他

我想可能 py 和 php 的交互除了:① 终端命令 ② 接口 这两种成本低但是笨蛋系统的方法,可能只能依赖于独立的中间系统了,但是又会带来新的运维成本,还是得依据项目采用不同办法了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇