[英]How can I use & set cookies whilst inside a Laravel queued Job, and why is my current solution failing?
我需要应用程序的一部分从核心应用程序的工作流中异步调用Reddit。 我使用在这里构建的Reddit API库实现了一个半可行的解决方案。 对于不知道的用户,Reddit 通过OAuth管理身份验证,并为特定用户返回承载和令牌,该令牌和令牌在生成后的60分钟内到期。
我已选择使用Cookie在上述时间段内存储此授权信息,如此处的requestRedditToken()
方法所示 。 如果在需要再次向Reddit发出请求时未找到cookie(即cookie已过期),则会生成另一个reddit令牌。 这似乎可以正常工作 。
我遇到的麻烦是概念化如何将cookie与守护程序队列工作器集成在一起时的处理方式,此外,我需要了解为什么这些调用会定期失败 。
如上所述,正在使用的应用程序调用Reddit。 这些调用是由要处理的作业类创建的: UpdateRedditLiveThreadJob
,您可以在此处查看 。
这些作业由守护进程的Artisan队列工作人员使用Laravel Forge处理, 您可以在此处查看工作人员的详细信息 。 在这种情况下,队列驱动程序是Redis,工作程序由Supervisor监视。
UpdateRedditLiveThreadJob
并将其扔到要处理的队列中。 handle()
方法被调用。 为什么该流在最初的一个小时内起作用,然后在假定cookie已过期之后如上所述如上所述崩溃了?
我已经尽力了解Laravel Queues的工作原理,但是从根本上来说,我很难概念化可用的各种类型的队列管理选项: queue:listen
, queue:work
,守护queue:work
在Supervisor上运行的守护进程等。 。我当前的队列基础结构与使用cookie来管理令牌兼容吗?
为了使应用程序按预期运行,我需要对代码库进行哪些调整?
我的工作流程将如何处理多个用户,每个用户可能都有多个Cookie?
如果重新启动队列工作器,为什么工作流程会神奇地重新开始工作?
如果我在这里描述不正确或需要澄清,请让我知道,我已经尽力简洁地解释了这个问题。
您的逻辑不正确。 队列作业实际上是运行php脚本的cli。 它与浏览器没有交互。 Cookies是在浏览器中设置的,请参阅此相关主题以供参考。
看到您正在与API交互时,将令牌设置为Job中的一个简单变量(或者最好是在该包装器中),然后在该Job中重新使用该令牌会更有意义。
TL:DR:您的包装器不是API客户端。
我知道这不是您所有问题的完整答案,但这是朝着正确方向发展的推动力。 因为我会回答您所有的问题-最终-可能无法解决您的问题;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.