Skip to content

Commit e736ec0

Browse files
committed
docs: add cron-job to dotnet
1 parent 9f2a1de commit e736ec0

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed

src/components/Sidebar/data.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2494,6 +2494,10 @@ export default {
24942494
title: "تغییر نسخه NET.",
24952495
link: "/paas/dotnet/how-tos/choose-version"
24962496
},
2497+
{
2498+
title: "تنظیم Cron Job",
2499+
link: "/paas/dotnet/how-tos/set-cron-job"
2500+
},
24972501
{
24982502
title: "راه‌اندازی برنامه WebSocket",
24992503
link: "/paas/dotnet/how-tos/use-websocket"
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
import Layout from "@/components/Layout";
2+
import Button from "@/components/Common/button";
3+
import Section from "@/components/Common/section";
4+
import Alert from "@/components/Common/alert";
5+
import Tabs from "@/components/Common/tab";
6+
import Step from "@/components/Common/step";
7+
import Card from "@/components/Common/card";
8+
import Important from "@/components/Common/important";
9+
import Highlight from "react-highlight";
10+
import Link from "next/link";
11+
import NextPage from "@/components/Common/nextpage";
12+
13+
import Head from "next/head";
14+
15+
<Layout>
16+
<Head>
17+
<title>مستندات تنظیم Cron Job در dotNET - لیارا</title>
18+
19+
<meta property="og:title" content="مستندات خدمات رایانش ابری لیارا" />
20+
<meta property="og:description" content="مستندات نحوه تنظیم Cron Job در پلتفرم dotNET در لیارا" />
21+
<meta property="og:image" content="https://files.liara.ir/liara/logos/liara-poster.jpg" />
22+
</Head>
23+
# تنظیم Cron Job
24+
<hr className="mb-2" />
25+
26+
Cron job یک وظیفه زمان‌بندی شده در سیستم‌عامل‌های Unix و Linux است که به کاربران اجازه می‌دهد تا اسکریپت‌ها یا دستورات را در فواصل زمانی منظم اجرا کنند. این ابزار به خصوص برای انجام وظایف دوره‌ای مثل پشتیبان‌گیری، ارسال ایمیل، اجرای اسکریپت‌های نگهداری سیستم، یا به‌روزرسانی اطلاعات مفید است.
27+
<div className="h-4" />
28+
29+
30+
برای تنظیم یک Cron Job در dotNET می‌توانید از <Important>IHostedService</Important> یا <Important>BackgroundService</Important>، استفاده کنید.
31+
به عنوان مثال، فرض کنید که در فایل <Important>Program.cs</Important> مشخص کردید که در صورت ارسال درخواست <Important>POST</Important> به مسیر <Important>execute/</Important>، یک لاگ تحت عنوان <Important>The script is executed</Important> ثبت شود:
32+
33+
<div className="h-2" />
34+
<div dir="ltr">
35+
<Highlight className="csharp">
36+
{`app.MapPost("/execute", () =>
37+
{
38+
Console.WriteLine("The script is executed");
39+
return Results.Ok("Script executed successfully");
40+
});`}
41+
</Highlight>
42+
</ div>
43+
<div className="h-2" />
44+
45+
و اکنون، فرض کنید که قصد دارید در هر دقیقه، به مسیر
46+
مشخص شده، درخواست <Important>POST</Important> ارسال کنید.
47+
برای این‌کار، می‌توانید در مسیر اصلی پروژه و در کنار فایل <Important>Program.cs</Important>، یک فایل به نام <Important>ScheduledJobService.cs</Important> ایجاد کنید و کد زیر را در آن قرار دهید:
48+
49+
<div className="h-2" />
50+
<div dir="ltr">
51+
<Highlight className="csharp">
52+
{`public class ScheduledJobService : BackgroundService
53+
{
54+
private readonly ILogger<ScheduledJobService> _logger;
55+
private readonly HttpClient _httpClient;
56+
57+
public ScheduledJobService(ILogger<ScheduledJobService> logger)
58+
{
59+
_logger = logger;
60+
_httpClient = new HttpClient();
61+
}
62+
63+
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
64+
{
65+
while (!stoppingToken.IsCancellationRequested)
66+
{
67+
try
68+
{
69+
_logger.LogInformation("Executing scheduled request...");
70+
71+
// send a POST request to the server
72+
var response = await _httpClient.PostAsync("http://<app-name>:<app-port>/execute", null, stoppingToken);
73+
74+
_logger.LogInformation($"Response: {response.StatusCode}");
75+
76+
}
77+
catch (Exception ex)
78+
{
79+
_logger.LogError($"Error in ScheduledJobService: {ex.Message}");
80+
}
81+
82+
// wait for 1 minute
83+
await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
84+
}
85+
}
86+
}
87+
`}
88+
</Highlight>
89+
</ div>
90+
<div className="h-2" />
91+
92+
در قطعه کد فوق، به‌جای <Important>&lt;app-name&gt;</Important> و <Important>&lt;app-port&gt;</Important>، نام برنامه و پورت آن را قرار دهید.
93+
اکنون باید سرویس پس زمینه را مانند شکل زیر به فایل <Important>Program.cs</Important> اضافه کنید:
94+
95+
<div className="h-2" />
96+
<div dir="ltr">
97+
<Highlight className="csharp">
98+
{`builder.Services.AddHostedService<ScheduledJobService>();`}
99+
</Highlight>
100+
</ div>
101+
<div className="h-2" />
102+
103+
104+
تمامی کارها انجام شده است و اکنون، می‌توانید
105+
برنامه‌تان را در لیارا مستقر کنید.
106+
107+
<div className="h-2" />
108+
<Alert variant="success">
109+
<p>
110+
یک برنامه مثال در <a href="" className="text-[#2196f3] ">گیت‌هاب لیارا</a> قرار گرفته است که می‌توانید از آن، استفاده کنید.
111+
</p>
112+
</Alert>
113+
114+
115+
</Layout>

0 commit comments

Comments
 (0)