当前设置
我目前有一个名为HomeController.php
的控制器类,为用户在表单中输入的详细信息创建request
,并保存其他详细信息(这不是此问题的一部分)。
然后将此request
发送到另一个运行API的控制器类Jobcontroller.php
,careerjet
并返回urls
问题
我必须手动需要访问另一个页面来运行API并获取结果,然后必须执行python脚本。 IE:
website.co.uk/output -> URL 1 , URL 2 , URL 3
exec(script1.py)
exec(script2.py)
exec(script3.py)
我想要实现的目标
我当然不想这样做,并且需要一切都要自动化。这意味着,如果用户单击submit
,api代码将立即运行,然后python脚本和它不会影响前端可用性速度。 (他们不必在同一页上逗留,等待最后一份工作完成)。
我查看了这个队列的实现 - 似乎它只在没有其他请求的情况下运行。
答案 0 :(得分:0)
这更像是一种架构类型的问题,但您可以尝试以下选项:
<强> 1。创建一个单独的Python应用程序并通过API进行通信
如果必须进行同步操作,您可能希望通过API执行python脚本。只需通过像Flask这样的东西托管您的脚本。
当Laravel向Flask应用程序发送API请求时,它将启动脚本,并通过HTTP API返回结果。
<强> 2。在队列中执行作业
所以基本上与上面的流程相同,但实际上创建了一个Laravel Job
,它在后台与Job
完成后,您可以更新数据库,发送通知等等。
第3。通过PHP shell命令执行Python脚本
我不推荐这种方法用于长期解决方案,但您可以让PHP执行一个shell命令来启动您的python脚本。
让脚本与PHP应用程序进行通信可能会让人痛苦不堪。但这是可能的。