یه
یا اینکه با دستور
اول خود
بعد دستورات زیر رو توی ترمینالمون وارد میکنیم:
به اسکریپتمون دسترسی اجرا شدن میدیم با دستور
اینجا اون زمان بند رو فراخوانی میکنیم که ورودی هاش رو ادیت کنیم: (ورودی هاش رو از یه فایل میگیره چون توی لینوکس همه چیز فایله!!! 🗃) {راستی نیازه که پکیج cronie رو نصب داشته باشید برای دسترسی به زمان بند}
این خط رو به اون فایل اضافه کنید:
ترتیب کارمون شد اینشکلی:
Bash Script هم میتونیم بنویسیم و بذاریمش آدرسش رو بذاریم توی یکی از خط های .bashrc سیستم لینوکسیمون که به صورت معمول ران بشه و چک کنه اگر فایل عکس Astronomy امروزمون رو داریم اسکریپت پایتونمون رو اصن ران نکنه!یا اینکه با دستور
crontab بیایم به job scheduler یا همون زمان بند سیستم عامل لینوکسیمون یک تسک اضافه کنیم که هرموقع سیستم ران شد این کار ها رو انجام بده که خودم این راه رو ترجیح میدم:اول خود
bash noscript که اسمشو میذاریم run_apod.sh که قراره اسکریپت پایتون رو به صورت زمان بندی شده ران کنه رو مینویسیم و path فایل هم مینویسیم:#!/bin/bash
cd /path/to/your/noscript #change this!!!
TODAY=$(date +%Y-%m-%d)
if [ -f "apod_$TODAY.jpg" ]; then
echo "APOD for today ($TODAY) already exists. Skipping."
else
echo "Fetching APOD for $TODAY..."
/usr/bin/python3 apod.py
fi
بعد دستورات زیر رو توی ترمینالمون وارد میکنیم:
به اسکریپتمون دسترسی اجرا شدن میدیم با دستور
chmod :chmod +x /path/to/your/noscript/run_apod.sh
اینجا اون زمان بند رو فراخوانی میکنیم که ورودی هاش رو ادیت کنیم: (ورودی هاش رو از یه فایل میگیره چون توی لینوکس همه چیز فایله!!! 🗃) {راستی نیازه که پکیج cronie رو نصب داشته باشید برای دسترسی به زمان بند}
crontab -e
این خط رو به اون فایل اضافه کنید:
@reboot /path/to/your/noscript/run_apod.sh
ترتیب کارمون شد اینشکلی:
crontab(Bash(python)))
You Might Think He Loves You for Your Money but I Know What He Really…
Death Grips
Locked In Kitchen Block num.1 🧪
This media is not supported in your browser
VIEW IN TELEGRAM
When Your Project Pass 2000 Lines and The chaos Kicks In !!!
❤3
Forwarded from TorhamDev | تورهام 😳
TorhamDev | تورهام 😳
Photo
تست کردن کانکارنسی در جنگو
دیشب داشتم تسک مصاحبه شرکت صرافی تبدیل میزدم. داخل تسک لازم بود یک api رو تست کنم که مشکل race condition نداشته باشه. برای اینکار با استفاده از pytest-django شروع کردم تسک های معمول نوشتن و همچی اوکی بود. برای تستهام هم یک fixture نوشتم که برام یک Seller بسازه و با استفاده از اون ریکوئست بزنم به api. همین api نباید حساب seller بیشتر از چیزی که درخواست داده تایید کنه. مثلا اگر درخواست داده ۱۰۰ تومن زیاد تر بشه اگر همزمان ۲۰ تا درخواست برای تایید این افزایش بیاد فقط یکدونه باید تایید بشه.
مشکل این تایید شدن نیست شما برای این جلوگیری از این ماجرا میتونید lock دیتابیس بگیرید.
مشکل اونجایی پیش اومد که من برای تست این race condition اومدم ۲۰ تا ترد ساختم و اون ۲۰ تا همزمان ریکوئست میزدن به این view ولی اتفاقی که افتاد این بود که Seller ای که من داخل فیکسچر ساخته بودم داخل این تردها انگار وجود نداشت. زمانی که ریکوئست خارج از thread میخورد همچی اوکی بود و api میتونستد sellerای که براش درخواست داده بودم رو پیدا کنه. اما تمام درخواستهای داخل تردها به ارور ۴۰۴ میرسیدن چون seller وجود نداشت.
بعد از فحشها و تلاشهای فراوان و تحقیق فهمیدم که جنگو عزیز برای هر تست یک transaction باز میکنم و تغییراتی که ایجاد میشه به خاطر اینکه داخل یک ترنزاکشن هستن کامیت نمیشن :) در نتیجه دیتابیس همچین ابجکتی برای تردهایی که ساختم نداره :) و باید همونطور که در عکس میبینید جنگو فورس کنید که تغییرات کامیت کنه تا داخل تردها هم بتونید دیتایی که ساختید ببینید.
و تمام اینا تو محیط تست بود دیگه.
@TorhamDevCH
دیشب داشتم تسک مصاحبه شرکت صرافی تبدیل میزدم. داخل تسک لازم بود یک api رو تست کنم که مشکل race condition نداشته باشه. برای اینکار با استفاده از pytest-django شروع کردم تسک های معمول نوشتن و همچی اوکی بود. برای تستهام هم یک fixture نوشتم که برام یک Seller بسازه و با استفاده از اون ریکوئست بزنم به api. همین api نباید حساب seller بیشتر از چیزی که درخواست داده تایید کنه. مثلا اگر درخواست داده ۱۰۰ تومن زیاد تر بشه اگر همزمان ۲۰ تا درخواست برای تایید این افزایش بیاد فقط یکدونه باید تایید بشه.
مشکل این تایید شدن نیست شما برای این جلوگیری از این ماجرا میتونید lock دیتابیس بگیرید.
مشکل اونجایی پیش اومد که من برای تست این race condition اومدم ۲۰ تا ترد ساختم و اون ۲۰ تا همزمان ریکوئست میزدن به این view ولی اتفاقی که افتاد این بود که Seller ای که من داخل فیکسچر ساخته بودم داخل این تردها انگار وجود نداشت. زمانی که ریکوئست خارج از thread میخورد همچی اوکی بود و api میتونستد sellerای که براش درخواست داده بودم رو پیدا کنه. اما تمام درخواستهای داخل تردها به ارور ۴۰۴ میرسیدن چون seller وجود نداشت.
بعد از فحشها و تلاشهای فراوان و تحقیق فهمیدم که جنگو عزیز برای هر تست یک transaction باز میکنم و تغییراتی که ایجاد میشه به خاطر اینکه داخل یک ترنزاکشن هستن کامیت نمیشن :) در نتیجه دیتابیس همچین ابجکتی برای تردهایی که ساختم نداره :) و باید همونطور که در عکس میبینید جنگو فورس کنید که تغییرات کامیت کنه تا داخل تردها هم بتونید دیتایی که ساختید ببینید.
و تمام اینا تو محیط تست بود دیگه.
@TorhamDevCH