一个简单的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第三方库


热门话题
java Eclipse内存分析器(MAT):不显示当前正在运行的进程   java Apache Velocity:转义字符不能作为关联数组键用于PHP   不截断零的java格式十进制输出   在另一个类文件中调用时返回空值的java getter   java集合获取连接   java解析json使用Gson登录系统应用程序强制关闭   java DelferredResult带有两个请求的ajax请求   java可降低功耗,同时应使用无线   java BoxLayout无法共享错误?   java如何使用计时器制作闹钟   java使用OAuth2保护RESTWeb服务:一般原则   java在一个jframe上显示多个图像和按钮