Обычно я использую это решение, когда хочу проверить что-то на сервере. Я знаю, что вы можете положиться на модель валидации, которую использует MVC, но когда я делаю проверки, я пытаюсь использовать отдельный проект, если мне нужно сделать для них единичный тест. Допустим, у вас есть два приложения: один рабочий стол и один веб-сайт, тогда оба могут совместно использовать ValidationProject вместо повторения кода в обоих приложениях для одного и того же «Просмотр» / «Экран». Идея здесь заключается в том, чтобы изолировать проект Validation как независимый проект вашего решения.
Итак, вы можете скачать проект FluentValidation от NuGet, FluentValidation использует правила внутри конструктора, вы можете увидеть здесь документацию https: //github.com/JeremySkinner/FluentValidation/wiki
Например, можно использовать это правило даты, например, вы можете также установить правила для своего значения min и вашего максимального значения:
public class CustomerValidator: AbstractValidator {
public CustomerValidator() {
RuleFor(customer => customer.startDate)
.NotNull()
.WithMessage("You should select a start date")
.Must(d => d.HasValue && d.Value <= DateTime.Today)
.WithMessage("The start date should not be greather than current month/year");
}
Теперь внутри вашего контроллера
[HttpPost]
public ActionResult Index(Customer c)
{
if(ModelState.IsValid)
{
var validator= new CustomerValidator();
var valResult = validator.Validate(c);
if (valResult.Errors.Count != 0)
{
valResult.Errors.ForEach(x => ModelState.AddModelError(x.PropertyName, x.ErrorMessage));
return View(vm);
}
//Your code here
}
}
Вы можете взглянуть на код, кажется, что он доступен в v1beta2
Dataproc API Python-клиенте .
Вот пример того, как его установить (из Airflow DataprocClusterCreateOperator ):
cluster_data['config']['lifecycleConfig']['idleDeleteTtl'] = '1800s'
Вот другой подход.
Попробуйте удалить кластер из программы, которую вы запускаете. Когда вы закончите свои вычисления, пусть ваша программа сама вызовет команду удаления кластера.
print("Try to delete cluster %s " % job_args['cluster_name'] )
result = subprocess.call(['gcloud',
'dataproc',
'clusters',
'delete',
job_args['cluster_name'],
'--quiet',
'--async'])
print("Sent command result: %s" % str(result))