V2EX POST
649 subscribers
138 photos
31 videos
99 files
104K links
v2ex新贴定时推送,可按需置顶本频道然后关闭通知
Download Telegram
聊聊 PHP 容器应用的最佳实践

最近公司正在推进容器化建设,主要是扩容方便。
然后有几个问题,问一下。

项目是 laravel 。那么附带的还有他的 queue 和 cron artisan schedule:run 。

是都放在一个容器里吗?弄个 supervisor 启动 nginx 、fpm 、cron -f 、和 queue:work ?

总觉得哪里不对,有啥最佳实践推荐一下吗?

#queue #cron #容器 #laravel #artisan #schedule #run #supervisor #nginx #fpm
请教一个并发处理的逻辑。

有 10 个 IP 资源,
有 10 个固定数量的 worker ,
有 1 个先进先出的 queue ,在 13:59 分左右,大约 n ( 1-100 )个 job 进入队列,同时 worker 开始消费队列。
在每个 job 里,要取得一个 IP ,进行一些请求,大约持续 1-600 秒。请问如何保证在同一时间,每个 worker 在使用 unique 的 IP ?

#IP #worker #10 #job #队列 #先进先出 #queue #13 #59 #100
接上文, rq worker 里面又创建新的 worker 需要怎么处理

感谢大家在前文 [请教下各位 Gunicorn...]( https://www.v2ex.com/t/876794)提供的帮助,前段时间有些忙,没有一一回复大家。在这里感谢各位了,中秋快乐。
听取了大家的意见,由于 celery 对于我来说过于复杂,所以使用 [rq]( https://python-rq.org/) 来做。
叨扰一下新的问题:
1. 长耗时任务分为两个步骤
2. 步骤 1 执行完,才执行步骤 2
3. 步骤 2 内部需要拆分为多个 worker 并行执行。
## 目前遇到的问题是
1. step_two 里面的 worker 变成串行了。
2. 要怎么汇总 step_two 的运行结果
```python
@app.route('/task')
def add_task():
user = request.args.get('user')
if user:
print('执行步骤 1')
d = datetime.now().strftime('%Y%m%d%H%M%S')
name = f"{user}_{d}"
queue.enqueue(
step_one,
args=(name,)
)
worker = Worker([queue], connection=redis, name=name)
worker.work(burst=True)

print('执行步骤 2')
step_two(name)
# TODO: 汇总上面的结果返回给网页端
return f"Task {name} complete"
return 'No value for n'

def step_one(name):
delay = 5
print(f"Running {name}, Simulating {delay} second delay")

time.sleep(delay)

f = open(f"step_one_{name}.txt", 'a')
d = datetime.now().strftime('%Y%m%d-%H%M%S')
f.write(d)
print(f"Task {name} complete")

return name


def step_two_fn(name):
delay = 5
print(f"Running {name}, Simulating {delay} second delay")

time.sleep(delay)

f = open(f"step_two_fn_{name}.txt", 'a')
d = datetime.now().strftime('%Y%m%d-%H%M%S')
f.write(d)
print(f"Task {name} complete")

return name


def step_two(name):
for i in range(2):
worker_name = f"{name}_{i}"
queue.enqueue(step_two_fn, worker_name)
worker = Worker([queue], connection=redis, name=name)
worker.work(burst=True)

```

#name #step #worker #delay #two #print #步骤 #def #user #queue
Linux fio 测试磁盘性能, iodepth 这个参数是什么意思?

iodepth 跟 linux 内核中 blk-mq 有关系吗?

iodepth 跟 linux 内核中 request_queue 有关系吗?

有没有大佬能详细解释一下,最好能从内核代码层面说清楚 iodepth 的实际作用。

#iodepth #内核 #linux #blk #mq #request #queue #解释一下 #大佬 #关系
go 的爬虫 colly 中 queue async 和 parallelism 之间关系会冲突吗?

如果使用 queue 的话本身就是 async 了吧?不需要再启用 colly.Async ?再启用的话会有什么影响吗?
Limit 中的 Parallelism 是不是只在 async 或者 queue 的情形下有效?

#queue #async #启用 #colly #Async #Limit #Parallelism #的话 #情形 #是不是