首页 > 解决方案 > 如何为多个用户提供持续运行的 python 脚本(社交媒体机器人)

问题描述

我希望你们都度过了美好的一天。所以我正在使用 Python 开发一个项目。该脚本的工作是通过 http 请求在社交媒体平台上自动执行操作和任务。截至目前,此脚本的一个实例访问一个用户帐户。现在,我想创建一个网站,让用户可以在其中注册、将他们的凭据输入社交媒体平台并运行此脚本的实例来执行自动化任务。每次新用户注册时,我都考虑过为此脚本创建一个新进程,但这似乎效率不高。另外虽然关于使用线程,但似乎也不合理。特别是如果有 10,000 个用户注册。做这个的最好方式是什么?如何扩展?非常感谢你们。

标签: pythonweb-servicesautomationhttprequestscale

解决方案


您正在运行的任务的性质是什么?

这些任务只是在一天中的预定时间运行的作业,还是每 X 分钟运行一次?为此,您可以让您的 Web 应用程序注册 cronjobs 或类似的,并且每个 cronjob 可以生成您的脚本的一个实例,我假设它是短期运行的,以一次执行一个用户的自动化任务。如果脚本的确切时间无关紧要,那么您可以将这些脚本的运行分散在一天中,如果需要,可以在单独的机器上运行。

上述方法可能无法很好地扩展到 10,000 个用户,并且您将需要更健壮的东西,特别是如果脚本需要连续运行(例如,您正在从 Facebook 轮询一些数据并需要对其更改做出反应)。如果每个用户的通信量很大,那么您可以考虑使用生产者-消费者模型,其中一堆生产者脚本(连续运行)将工作请求发布到一个全局队列中,由一堆消费者脚本轮询并执行。您还可以在多台机器上平衡此类消费者和生产者的负载。

当然,您肯定希望通过在多个线程或进程上执行这项工作来从机器的额外内核中挤出一些并行性。您可以使用多处理模块在 Python 中轻松完成此操作。


推荐阅读