假设我有一个销售T恤的零售应用程序。每件T恤都可以处于预售或售中阶段。
每次用户访问特定的T恤页面时,我都可以将现在的日期时间与销售时的日期时间进行比较,并确定它是预售还是在售并输出相应的数据/内容。
相反,我可以有一个"阶段"我的T恤上的字符串属性,最初设置为"预售"。然后,我可以设置一个任务队列,以便在销售开始时执行,并切换"阶段"来自"预售"的T恤的财产到"在售"。当用户访问T恤页面时,我会检查字符串,是否是"预售"或" insale"并输出适当的数据/内容。我的问题是,一种方法优于另一种方法吗?我假设第一种方法,即日期时间计算/比较,效率低于基于字符串比较的第二种方法?但是,第二种方法需要使用任务队列,这会增加开销/成本吗?
答案 0 :(得分:-1)
我想到的第一件事就是配置。它是本地的,它只是读取一个文件,并没有比较任何东西。
好的,我将使用我在Django和Flask项目中经常使用的结构。我的文件夹结构通常如下所示:
main/
-app/
|_ __init__.py
|_ app.py
-templates/
-settings/
|_ __init__.py
|_ settings.py
|_ settings.json
_ main.py
我的settings.py文件是变量所在的位置。它的价值很大,但它的实现很简单。 我们来看一个例子:
#settings.py
import json
path_of_json= "path here"
class Settings:
#Object interface of the settings
class _Product:
# Non-public class that implements a object interface for the products
def __init__(self,name,sale_status):
# Inicialization
self.name = name
self.sale_status = sale_status
def __init__(self):
#Handles what happens at initialization
global path_of_json
self.dict= self._load_json(path_of_json) #this dictionary will hold the data we load from the JSON
self.product1 = self._Product(self.dict['product1_name'],self.dict['product1_sale_status'])
#Here we use the data that were loaded from the JSON
self.product2 = self._Product(self.dict['product2_name'],self.dict['product2_sale_status'])
def _load_json(self):
#Here you implement the JSON loading
pass
这是我们的配置文件。
现在到主应用程序,以及如何做到这一点
#main.py
from settings.settings import Settings
my_settings = Settings()
product1 = { "name":my_settings.product1.name,"sale_status":my_settings.product1.sale_status}
#Here the product was loaded from the settings
#A lot of awesome code here
def render_product_page(product): #This function receives a dictionary
render_template("sale_status-insert how your template engine show fields here", product["name"])
这就是(有点)完成的。
现在您需要实现的是一个小守护程序,每24小时唤醒一次,检查settings.json
文件上的数据,如果它已过时,请更新它。 (我会留给你XD)
希望这会有所帮助:)