在过去的三个月里,我一直在使用 Netlify 来存储 100% 的应用程序(前端和后端)。到现在为止还挺好。
现在唯一的问题是我需要为每个用户存储一个自定义属性(比如电话号码),显然 Netlify Identity 不支持这个(只有电子邮件、姓名和角色https://www.netlify.com/文档/身份/)。
我不想为了这个细节而改变整个应用程序以迁移到另一个托管服务提供商(实际上,我不能,它是针对客户的,我只是没有时间),因为它很好用,但是在同时我需要它。
你能想到任何解决方法吗?“hackish”越少越好,但我知道我超出了 Netlify Identity 的预期用途。
我有一个 Python 多处理池,它的工作时间很长,即使经过彻底的调试,它也不够健壮,不会每 24 小时左右失败一次,因为它依赖于许多具有复杂交互的第三方非 Python 工具。另外,底层机器存在某些我无法控制的问题。请注意,失败并不是指整个程序崩溃,而是部分或大部分进程由于某些错误而变得空闲,并且应用程序本身挂起或仅使用未失败的进程继续工作。
我现在的解决方案是定期手动终止该作业,然后从原来的位置重新启动。
即使它并不理想,我现在想做的是:从 Python 代码本身以编程方式定期重新启动多处理池。我真的不在乎这是否意味着在工作中杀死泳池工人。哪种方法是最好的方法?
我的代码如下所示:
with Pool() as p:
for _ in p.imap_unordered(function, data):
save_checkpoint()
log()
Run Code Online (Sandbox Code Playgroud)
我的想法是这样的:
start = 0
end = 1000 # magic number
while start + 1 < len(data):
current_data = data[start:end]
with Pool() as p:
for _ in p.imap_unordered(function, current_data):
save_checkpoint()
log()
start += 1
end += 1
Run Code Online (Sandbox Code Playgroud)
或者:
start = 0
end = 1000 # magic number
while start + 1 < len(data):
current_data = data[start:end]
start_timeout(time=TIMEOUT) # …
Run Code Online (Sandbox Code Playgroud)