一个简单的django应用程序,无需任何服务就可以在所有服务器节点上运行精确的函数。

django-serviceless-distributor的Python项目详细描述


Django无服务分销商

django无服务分发服务器是一个库,可以帮助您在没有任何其他服务器的情况下运行确切的函数。

它是怎么工作的?

它只是一个decorator,它接受参数和关键字参数,对它们进行pickle并将它们发送到具有http请求的其他节点。

使用效率高吗?

答案取决于您选择的模式。如果设置了Distributor.bounce_mode = False,则一个节点需要向所有节点发送数据,但是如果设置了Distributor.bounce_mode = True(默认设置),则所有节点都将向下一个节点发送数据,以便所有节点只发出一个请求,而不是len(SERVICELESS_DISTRIBUTOR_NODES)

安全吗?

它是安全的,因为您将secret_密钥作为机密保存。库使用django.core.signing对数据进行签名和签名,以确保通过服务器发送数据。但是始终建议配置服务器以限制连接到此终结点的IP。

快速启动

安装库

pip install django-serviceless-distributor

配置您的urls.py

....path("serviceless_distributor",include("django_serviceless_distributor.urls")),....

配置您的settings.py

# Nodes IPs (Do not use load balancer IP, we couldn't know# if all nodes affected if you use load balancer IP)SERVICELESS_DISTRIBUTOR_NODES=["http://10.0.0.0","http://10.0.0.1",....]# Headers to use while sending data# (This can be used to change "Host" to pass ALLOWED_HOSTS restriction)SERVICELESS_DISTRIBUTOR_HEADERS={}

注册要分发的函数

fromserviceless_distributorimportDistributor@Distributor.register_function()defsum_arguments(*args):returnsum(args)# Or lets suppose you want to distribute an imported functionfromsome_moduleimportsome_functionsome_function=Distributor.register_function()(some_function)

(非)常见问题

  1. 如何为不同的功能设置不同的节点集?

    special_nodes=["http://10.0.0.0","http://10.0.0.1"]@Distributor.register_function(nodes=special_nodes)defsum_arguments(*args):returnsum(args)# Orfromsome_moduleimportsome_functionDistributor.register_function(nodes=special_nodes)(some_function)
  2. 我能换条路吗?

    是的,您可以更改Distributor.path,但也不要忘记根据您所做的更改更改urls.py

  3. 图书馆同时发出多少个请求?

    默认为10,但可以通过设置Distributor.simultaneous_requests进行更改。attention同时请求意味着将注册的函数分发给其他节点。如果在一行中运行注册函数x次,服务器将发送x次请求。它不会为每个注册的函数运行创建x线程。

  4. 它堵塞了吗?

    no,它使用concurrent.futures.ThreadPoolExecutor创建线程并返回已注册函数的输出。

  5. 为什么我要使用这个而不是其他库?

    唯一的原因可能是省钱这就是我创造这个的原因。对我来说,与其他库相比,这不是一个好的解决方案,但至少在没有任何其他服务器的情况下我能做到最好。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程重新构造使用线程池和BlockingQueue的I/O密集型Java web服务   java SWT CTabFolder检查CTAB是否存在   java如何防止具体类的实例化?   java如何将子域定向到正确的JBoss应用程序?   java Android外部文件出现不一致   java FileSystemNotFoundException:未安装提供程序“jndi”   显示jframe上的java隐藏单选按钮   java CXF客户端TCP连接在每个请求之间关闭   Hadoop查询、日期、循环、BASH或Java   java从长类型到十进制类型对象的转换类型错误   java为什么不在用户消息中提供用户提供的数据?有可能的威胁/攻击吗?   使用作用域存储MediaStore的应用程序中的java共享意图问题   java我可以通过将成员指针传递给方法并在方法中分配来初始化它吗?   java如何在一个包含正负值的数组中找到最大的负值?   java有比较二叉树路径的简单方法吗?   java Swagger(ui)不显示操作   java KairosDB缺失值的线性插值   用于此特定求和的java循环